An end-point is a logical abstraction over an external destination where WSO2 ESB has to deliver the message. The end point defined in WSO2 ESB can also take care of quality of service aspects like security and reliability corresponding to the external destination.
A load-balancing endpoint is an abstraction over a set of endpoints that you want to distribute the incoming load. By default, WSO2 ESB supports the round-robin load-balancing algorithm, but it does not prevent you from having your own. Having support for load-balancing endpoints, you can also use WSO2 ESB as a load balancer. In fact, WSO2 Elastic Load Balance (ELB) is built on top of WSO2 ESB. You can read more about WSO2 ELB from http://wso2.com/products/elastic-load-balancer/.
A fail-over endpoint is an abstraction over a set of endpoints where you can define the fail-over behavior. If the primary endpoint fails then the ESB will start sending messages to the next available one. The default fail over behavior is a dynamic fail-over and it will fall back to the primary endpoint as soon as it is available. Whenever the ESB discovers a given endpoint is down, it will mark it as inactive.