An "Agent Handler" handles Agent-to-Server Communication. The ePO server has one installed by default (Apache) and one can be installed throughout the network to offload connections from the server itself, to help prevent max connection issue. This will also help allow agents on the other side of a NAT to communicate to the ePO server.
Distributed repositories house updates/products/patches to help reduce bandwidth taken by agents to the ePO server.
Hope that helps!
Just to add to what Greg said - there is a common misconception that Agent Handlers are a replacement for distributed repositories, or for use in low-bandwidth environments (for example a branch office with a slow link back to the main ePO server.)
Both of these are wrong
The main purpose of Agent Handlers is to allow a single ePO installation to scale to handle large numbers of client machines. Each agent handler requires a permanent high-speed link to the SQL server, which is why they should not be used in low-bandwidth environments.