Along with what @Tomarty said, GetService will also create the service if it’s not currently there.
For instance, game:GetService("Teams") will create the Teams service if it’s not currently there. I don’t know if there are other services like that though–but maybe?
I had a talk earlier with one of my friends about this. They said quote “services are promised to be loaded implicitly”. Also, FindService exists too, which is like FindFirstChildOfClass but errors if the class isn’t a service.
No because if you are cloning an object, you will already have a reference to said object. The real reason for :WaitForChild() is that sometimes the script will execute before the object loads in and cause your script to error.
What service, other than teams, “doesn’t exist” and needs to be created? From what I know, they’re all in the DataModel at run time. Those who need teams create it in Studio via the command bar. So essentially what I said isn’t necessarily wrong.