I've finally managed to reread some of old Udi's articles and suddenly realized that following few lines are the best explanation of what ESB is all about, ever.
I never want to miss it again that is why I repost it right here in my blog.
"it’s all in the message. Forget about remote method invocations and pub-subbing events—down on the wire it’s all just messages. The trick is to think of your system as passing messages at the application level as well.
Asynchronous message passing over queues. It’s really quite simple.
Once you’ve packaged everything into the message, that message can be dynamically routed anywhere, and so can its responses. The application doesn’t need to bind against any specific endpoint—it just drops a message addressed to some logical location. Infrastructure can make sure that messages get to the logical recipient, even if they change physical locations.
That infrastructure is what brings about the “Bus” architectural style between your distributed components."
As Udi says, you have to reread it several dozens of times, until it strikes to you.
Good luck!