The Hierarchy contains all the objects (GameObject) in the current scene. Some of them are direct instances of asset files, such as 3D models, and others are instances of prefabs, custom objects that make up most of your game. You can select objects in the hierarchy, and drag one object onto another to create a Parenting relationship. When adding and removing objects in the scene, they will also appear and disappear from the Hierarchy.
GameObjects are empty containers that you configure by adding components. Components allow GameObjects to project geometry (from a simple cube to more complex three-dimensional models), emit light, act like a camera, or even create complex behavior using scripts.
GameObjects can also act as folders containing other GameObjects, which makes them quite useful for organizing your scene.
A scene usually represents one level of your game, although theoretically you can put the whole game in one scene. Any GameObjects actively used in your game in the current scene will appear in the Hierarchy window.
Each new scene starts with the main camera and the directional light, which are both GameObject objects. But you can always delete them and add them later. When you remove a GameObject from the Hierarchy, you are actually removing it from the scene.