Würde da gerne besser durchblicken.
Callbacks sind ganz einfach Funktionen, die "zurück" aufgerufen werden. Sagt ja der Name.
Länger:
Wenn OpenGL (oder was für eine Software auch immer, nennen wie sie API XYZ) selbst nicht entscheiden kann oder will, wie oder was mit bestimmten Daten passieren soll, dann wird in der API die Möglichkeit geboten, einen Callback als Parameter anzugeben (oder wie auch immer). Das ist eine von dem Benutzer der API (DIR!) erstellbare Funtion mit entsprechend von der API festgelegten Parametern, die dann zur Laufzeit aufgerufen wird.
Ganz einfach:
1. OpenGL/API XYZ weiß nicht wass der Anwender an der Stelle mit Daten machen möchte
2. OpenGL/API XYZ benutzt an dieser Stelle eine Callbackfunktion
3. Anwender von OpenGL/API XYZ schreibt eine Funktion mit seiner gewünschten Funktionalität und von OPen/API XYZ festgelegten Parametern
4. Anwender übergibt die Funktion an entsprechender Stelle an entsprechender Stelle
5. OpenGL/API XYZ "weiss" immer noch nicht, was der Anwender machen will, ist ihm/ihr aber egal, weil der Anwender ja eine Funktion zur Verfügung gestellt hat. Diese rufz OpenGL / API XYZ "einfach" (natürlich gehört da noch ein wenig mehr dazu) auf.
6. Der Kreis schließt sich.
Sehr einfaches, konkretes Beispiel: Ctrl+C in "Terminals":
1. Das Standardverhalten, dass als Callback-Handler implementiert ist, ist es, ein Signal an den Vordergrundprozess im Terminal zu senden, dass den Prozess unterbricht.
2. Man kann einen eigenen Handler (Callback!) registrieren, der z. B. "Wirklich beenden j/n" ausgibt und erst bei Drücken auf die Taste j das Programm beendet. Ansonsten beendet sich die Handlerfunktion und es geht einfach weiter.
Das war jetzt keine technisch 1Akorrekte Beschreibung in Fachjargons, sondern eine hoffentlich auch für "Uneingeweihte" einigermaßen verständliche.