Hi Typo,
There are several ways to create a new script, this just demonstrated it. You can, as you say, either directly add it as a component, in doing so the new script will be placed in the root of the assets folder, or, you can right-click in the assets folder, or sub-folder, create the script and then either use the Add Component button, selecting your script, or just drag it across to it.
It wouldn’t, by default, be added to the Camera GameObject, for it to do so, you’d need to select the Camera, and then use Add Component.
A GameObject is effectively just an id. Components tend to add behaviour. So, if you consider your GameObject to be a thing and then add behaviour to it, the thing will be able to do things.
An example might be creating an empty GameObject and naming it Player, you might then add a script component to that called Movement.cs, perhaps another called Health.cs. As you can imagine from the name of these scripts, they could potentially add movement and perhaps health for our player.
You will also see some more generic GameObjects, perhaps a GameSession or a SceneLoader, these again are nothing special by themselves, but the scripts that might be added to them, perhaps GameSession.cs and SceneLoader.cs add behaviour which might keep track of the various game state data items, or in the case of the latter, provide functionality in order that a scene may load the next scene.
Hope this helps