If different clients are sending messages to ESB, ESB will decide to which server the message should be routed. Routing can be based on headers, content of message.
According to the content, can filter and then decide whether sending to back end or discarding the messages.
Client has their own format of sending messages but back end services has their own defined format. So ESB get the message from client and change to the format the back end can understand give it then get the response from back end then send it to client.
Client will communicate with the ESB with SOAP or HTTP protocol but the back end service is deployed with Fix protocol. So ESB is used to transform from HTTP protocol to Fix protocol.
QOS (quality of services)