When you send a message to another (remote) component and you don't wait/block for their processing of the message or a response, your "main thread" continues.
This makes it possible to send more messages or do other stuff.
myMessageChannelToSystemA.send(new StringMessage("Turn on the light"));
myMessageChannelToSystemB.send(new StringMessage("Open the windows"));
myMessageChannelToSystemC.send(new StringMessage("Close the door"));
In this case I told three components to do something. And because I don't wait for them to do it, they can fulfill the tasks in parallel.
In contrast
systemA.turnOnLight(); // blocking?
systemB.openWindows(); // blocking?
systemC.closeDoor(); // blocking?
may result in sequential processing (e.g. Remote Procedure Call).
Asynchronous message-passing is like sending emails. You can send several of them without waiting for the recipients to process/answer them.