Le dessin 3D se fait toujours vers un framebuffer mais pas forcément celui qui correspond à l'écran. Si tu utilises directement l'affichage sans passer par le serveur graphique ce sera celui affiché à l'écran sinon le dessin se fait dans un buffer qui est partagé avec le serveur d'affichage ou le compositeur.
L'utilisation d'OpenGL pour coder est assez particulière. C'est une norme implémentée par différents constructeurs qui peuvent donner différentes versions avec différentes extensions. Tu trouveras sous Linux un header qui contient tout ce qu'il faut mais ça ne veut pas dire que toutes les fonctions marcheront partout. Par exemple Mesa (les pilotes libres) n'implémente que OpenGL 3 alors que les pilotes propriétaires fournissent OpenGL 4. Tu as aussi la possibilité de passer par des toolkits pour faire de l'OpenGL : GLUT, GLFW, SDL, Qt, ... ça simplifie beaucoup la mise en place du contexte.
Qt et Gtk sont des toolkits visant une grande variété de plateformes, en particulier certaines sans accélération graphique. On trouve toute sortes de façon de dessiner. Je crois même que j'avais vu un backend html pour gtk.
DirectX est un ensemble de bibliothèque contenant entre autre Direct3D qui est un équivalent à OpenGL. Mais OpenGL est aussi disponible sur WIndows.
Un utilisateur (et l'environnement de bureau est lancé par l'utilisateur) ne peut pas changer le fichier de configuration de X.org qui appartient à root. Mais beaucoup de chose peuvent être changées à l'exécution par l'utilisateur donc par le bureau. Mais ces changements ne s'applique pas à tout le système.
Le manque de clarté est attendu : il est dur de poser les bonnes questions quand on ne connait pas. Les distributions linux sont pleines de composants interagissant les uns avec les autres et c'est dur de s'y retrouver au premier abord.
Edit: Je rajoute un lien vers un article (en anglais, j'espère que ça te convient) qui détaille tout ça et écrit par quelqu'un qui s'y connait sûrement mieux que moi :
http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ par l'auteur de ce blog d'explication sur X
https://magcius.github.io/xplain/article/index.html avec serveur X implémenté en javascript.