A callback is just a variable that happens to hold something "callable". There is no further magic to it than that.
var myfunc = function() {
alert("I was called");
}
var foo = myfunc;
foo();
The snippet above shows that a function is data or data can be a callable function. Just as data can be a string or printable as a string.
In JS, and a number of other high-level dynamic languages, the distinction between a function and other data is merely that it can be called. It can assigned, stored, made a member, returned and passed in as a parameter. In lower level languages, you are storing a pointer for the PC to jump to (function pointers).
Another way to see it is as a place holder - for a function that may be called when the other code reaches a particular state. I say may be - the other code may not reach that state as it is conditional - for example an error callback.