The X server, explaining that itself would take more than 10k words. Not suitable for an SO answer. Read the code and have your eyes explode. Bare X is applicable for software rendering. OpenGL can be used in two different ways in that context (see image below).
No. This depends on X. X is just yet another library which can implement its drawing primitives as its developers desire. But X itself is a hugely complex beast with its ridiculous number of extension which makes today's X function as it does (without there would be no OpenGL support, just as an example, no xrandr).
It depends on how much pain you are willing to take. You surely can draw X primitives or OpenGL primitives on your screen, but its not the 80s anymore.
Gtk+/Qt are abstractions of OS specific APIs (X/Wayland/W*) to lessen the pain creating GUIs and reduce the amount of code to write. These abstractions themselves are of high complexity and spane thousands of lines of code (just have a look at GtkTreeView Klass which Gtk+ provides). So instead of drawing pixels you can now just define Buttons and Layouts and Packing of Widgets.
So from this wiki article you can get a basic overview of just the GLX extension to the X proto:
Also have a look at the overview of how drawing is done with X
Be warned that this will hopefully be obsolete a couple of years from now, if wayland and or Mir do jumpstart. Those are totally different stories to tell.