Ответ зависит от того, что именно ты хочешь сделать. Если что-то стандартное, типа "Здравствуй,мир!", то пойдет что угодно. Хоть c++/qt, хоть c/gtk, хоть tcl/tk (последнее подойдет лучше всего).
Если же что-то специфическое, никем до тебя не реализованное (или реализованное так, что тебе не нравится), то тут однозначно Xlib. Или даже прямое общение с Х сервером через сокет/shm.
Пишется программа. В любом текстовом редакторе -- на твой вкус. Если вкус еще не определился, лучше начать с emacs. В процессе написания изучается документация на Xlib. По окончании очередного блока программы запускается компилятор gcc с опциями -I/usr/X11R6/include -L/usr/X11R6/lib -lX11. Написанный блок программы тестируется, при необходимости отлаживается (printf/gdb).