Assuming you’re running in the default asynchronous processing mode, commands will be:
Enqueued sequentially in the command buffer on the main thread when called
Submitted to the update thread when the system.update() is called
Executed on the update thread in the order the commands are present in the command buffer (i.e. calling order)
As a result, all commands enqueued will be executed, even if they would be repeated in a way that isn’t observable - i.e. the instance in your first snippet will be started, then restarted twice, even if the observable outcome is just that it starts.
The instance in your second snippet will:
Start
Stop
Start
Be marked for release
Restart
Stop
Ultimately, release due to being in a stopped state while marked for release when the system updates
You can read more about the asynchronous processing model that Studio uses in the Studio System Processing section of the Studio API Guide.