There are different types of widgets in Gtk, depending on how many children they can contain:
The base widget you will begin your programs with (in most cases) is the GtkWindow, a bin. That means it can have only one child. So what now - one widget is a bit sparse for an application. The solution are the containers, of which you choose one and add that to the window. To that container, you can either add some widgets or even more containers. That gives you the ability to nest containers and get exactly that layout you have in your mind.
The different containers like GtkHBox, GtkVBox, GtkTable and GtkFixed behave different in the way they layout and arrange widgets. Each one suits a certain purpose and need to be combined to achieve advanced layouts.