An extension gets installed into the extension database and is loaded each time on program startup. Extensions are background tasks, and can do more things than regular scripts, because they can create objects such as menu and event handlers that hook into the user interface. Extensions are also asynchronous, meaning that they set up their handlers, then wait for things to happen that call back into the script.
The Run Script command is for manually running scripts to perform specific tasks. You can't create permanent objects such as event handlers in regular scripts, because the script engine is shut down after the script exits. Any script that you run via Run Script does not get installed, and the format is different because it does not use the XML wrapper. Also, scripts run using Run Script are run in the foreground, so if a script stalls, it will stall the entire application. Therefore the script must perform its task quickly and finish so the application can continue running.
Otherwise, scripts run using Run Script have access to the same object model as extensions, so the syntax with regards to that is no different.
Hope this clears some things up.