Callback function needs a function prototype as any regular function call. As a basic difference, there is no static function address rather than a function pointer. Fucntion pointers are widely used in programming, e. g. with C++ classes.
The particulary thing will callback functions, to my opinion, is the opposite call direction implied here. You e. g. call a windows enumeration function and provide a callback function within your code segment, that is called back from operation system to deliver the data. The mechanism implies, that the function prototype is clearly defined, normally it is included in a header file shipped with the compiler.