A callback lets you pass executable code as an argument to other code. In C and C++ this is implemented as a function pointer. In .NET you would use a delegate to manage function pointers.
A few uses include error signaling and controlling whether a function acts or not.
Wikipedia