Remember, you can't learn "the Linux GUI", there is none. Linux, unlike Windows, is a pure command line OS, which means no native graphics, GUI controls, or GUI apps.
Everything having to do with graphics is a user-space process. The X Window System is currenty used by just about all distros, but it's just a way for programs to draw stuff, it has no concept of "windows" as you know them or GUI controls. Then there is a window manager, which fraws a frame around each window and lets you move and resize them. And finally, there are widget toolkits, which provide convenient, themeable GUI controls (or "widgets", as they're called outside of MS Windows).
A desktop environment is usually a window manager bundled with a tightly integrated set of applications that make up a desktop. You can use Linux without a desktop environment, just take your favorite window manager and optionally add a desktop-independent panel application, and you're done.
The most common widget toolkits are GTK+ (used in GNOME) and Qt (used in KDE). There are also other toolkits like Tk, Motif, Xaw, etc., but you'll rarely come across apps that use those. Just note that every toolkit has a different theme system (or are not themable at all), and apps using them will look different. There are two good solutions, though: The first is Qt's GTK+ theme, which actually uses GTK+ to draw its widgets. It makes Qt apps almost perfectly blend in with GTK+ apps. Then there is the QtCurve theme, which is available for both GTK+ and Qt, and both versions draw the same looking widgets based on a customizable config file.