It would take a long time to explain that, but the short answer is that one of the goals was to be able to wrap GTK+ and its supporting libraries easily with other languages. GObject is very convoluted, but it is an extensible system.
The other thing is that the system supports true object orientation in C, including polymorphism, data hiding (to the extent allowed by the language), inheritance, etc. And yes, it is very fast. I would recommend you check out an excellent tutorial by Mathieu Lacage, located at http://le-hacker.org/papers/gobject/
. It's long and involved, but it is very informative.
If you have any questions as you go along working with GTK+, I try and keep up with these forums, even though they are not very active.
Also, I would like to shamelessly plug my book, [i]Foundations of GTK+ Development[i]. More information can be found at http://book.andrewkrause.net
. Unfortunately, it will not be available until March 5, 2007, but it is available for preorder from Amazon.com. I am also willing to answer any questions you might have if I can. Good luck! :)