For 1. and 3., yes, you can interact with the Contact List via API.
API resources, SDKs, tutorials, and Developer Community to ask in-depth questions are at developer.mypurecloud.com
I do not know of a good way for an agent to select the contact list records they want to call (nor is that an advised utilisation of Outbound).
The safest way would probably be to set up one campaign per agent, and set up an online form which allows them to select the contacts they want to call, then use the API to populate the contact list for that agent's campaign. That's a lot of separate campaigns in a big contact center, and your web app would need to make sure two agents don't select the same contacts from the online list.
------------------------------
George Ganahl
Principal Program Manager
Genesys
------------------------------