C'est une couche d'abstraction légère au dessus du framebuffer (avec à priori de l'accélération matérielle pour certaines cartes vidéo) qui peut faire tourner un serveur X ou en fait tourner sur un serveur X...
D'ailleurs il me semble que SDL aussi peut tourner en framebuffer pur (ou au dessus de DirectFB), et être utilisé en back-end de DirectFB...
Enfin si c'est ce que tu veux faire (lib graphique en framebuffer) ça existe déjà quoi

Sinon utiliser DirectFB et/ou SDL sera bien plus simple (Je dirais bien "plus fiable" aussi, mais...) que de tout faire toi-même...
Pour la capture d'images en fb, il existe un utilitaire qui fait ça mais j'ai plus le nom en tête par contre... (Un truc du style fbcap je pense) Mais sauf si le système a évolué depuis, ça ne fonctionne pas avec l'accélération vidéo (Donc sous X)
Je vais pas t'expliquer les détails techniques parce que ma connaissance du système graphique merdique de Linux a ses limites et que je dirais quasi-certainement une connerie, mais c'est une constation que j'ai faite par moi-même: Le résultat peut être valide dans certains cas ou complètement pourrave dans d'autres. Ça va dépendre du driver vidéo utilisé, de la méthode de rendu utilisée, de ce que tu captures, à quel moment, etc. Bref, c'est pas fiable dans ce cas. (Typiquement, tu peux te retrouver avec des rectangles blancs ou incohérents sur l'image capturée)