Xlib is the library that X uses for applications to communicate with the X server. It's a higher level library built upon the X protocol. It hides the details of the protocol. It's often used for writing widgets, and Tk emulates many Xlib functions on platforms that don't have X, such as Win32 and the Mac (see XLEL).

There are two bindings for Xlib. The first was written in Lisp many years ago, and the newer version is written in C. X.org has archives that contain the Lisp version. Tk AFAIK has always used the C version.

If you want to learn how to program in Xlib I (GPS) suggest you look for the Xlib Programming Manual by Adrian Nye. The postscript papers included in the X documentation are quite good as well, but tend to be verbose.