Agents are the people (or person) that answer call(s) that have been placed into a specific Queue . An agent logs in indicating that s/he is now ready to take calls. Asterisk transfers an inbound call to a queue, which is then in turn transfered to an available agent. One agent can be assigned to many queues, and you can permit an agent to login from any extension.
Agents are defined in agents.conf, and activated via a special log-in procedure. This allows an agent to make themselves available to take queued calls by logging into a phone. The agent can later stop taking calls by logging off the phone.
As agents only make sense in an ACD configuration, they are normally defined as queue members inside
queues.conf, with no reference made to them from extensions.conf.
However, you can use agents to allow "following" of phone users. For example, you may have sales staff on multiple tables. Each user has their own agent number. You can configure your extensions.conf to call that agent no matter what phone they are using.