An endpoint is a software component within an address-space which can handle and issue requests. Endpoints can be categorised by how they create and/or handle requests.
For details on implementing custom endpoints please see the Physical Reference Book.
Sometimes is worth considering endpoints from their logical perspective distinct from their physical. From a logical perspective endpoints expose capability into an address space, this capability usually includes exposing resources. From the physical perspective we think of endpoints as instantiated classes which either come from library modules or application code. Often physical endpoints expose one logical capability but some may expose more - a good example is an overlay. It is for this reason that you will see the terms physical endpoint and logical endpoint used throughout the documentation.