So, how exactly does asynchronous software work?
By having a call or request return more or less immediately, but without a return value or response, which is instead sent at some later time.
What are the pros and cons?
Pro: the call does not block. If the caller is single-threaded, this enables it to do something else meanwhile. If it is multithreaded but with significant overhead per thread, it may require fewer resources.
Con: it's a more complex programming model. Harder to learn, easier to make mistakes.
What are callbacks?
The pieces of code that deal with the response.
Lastly, how does a synchronous web server perform vs. an asynchronous web server?
That depends on the underlying platform and the demands of the application being run. The general expectation is that an asynchronous server is better at handling large numbers of requests, especially when they require little computation but may have to wait for something else (such as a DB request) before they can complete.
As a warning against blanket statements: Java nio is Java's way of doing asynchronous networking. But there is some good evidence that it may actually perform worse than plain old simple blocking IO for most apps on modern JVMs (in part because those have gotten a lot better at dealing with lots of threads).