In this situation, where an agent is using some sort of reference and then manually choosing the destination to which the call should be transferred, you have some ... concerns. For instance, your agents all know the numbers to which you transfer calls. This is often a dangerous situation as these agents may decide they can do this job without need for ... YOU. lol.
Create an Ingroup for each destination, named accordingly as agents will SEE this name and choose it instead of the extension number they chose previously.
Create a special "transfers" campaign. You can create one for each destination, or a single catch-all. Set the campaign to accept "inbound and blended". In the lower section, just above the black line for Lists, be sure to check all the inbound groups appropriate for this campaign (ie: all of them if this is a catch-all).
Then go to the Agent's campaign and check those same groups in "Allowed Transfer Groups". This allows the agents to send calls TO these groups.
So you set up a remote agent for each "destination" number. You set the "lines" to the number of simultaneous live calls they can accept from you (overflow can be sent elsewhere or kept in HOLD music locally until a line opens up in the Ingroup controls). For each Remote Agent you select the appropriate campaign (eg: the Catch all one) and the Ingroup for the destination. This is how the phone number is linked to the Ingroup, through the remote agent. Each of these Remote Agents needs a User for EACH line (so if you assign user 3001 with 10 lines, you'll want to create users 3001-3010). This allows all calls to that Remote Agent to be viewed for the duration of the call in the realtime screen. You also get "monitor" capability, which is very freakin' handy. And of course, reporting.
When you "activate" that remote agent, it should show as ready in the real time screen, just like a logged in agent, except it'll have r/????? instead of "sip/????". Note that while activate happens immediately, deactivate can take up to a minute to actually happen.
When agents want to transfer, they will choose transfer-conf and then choose the ingroup from the dropdown and click on "local closer". From this point, you should be looking at the Vicidial Manager's Manual for any info you think you don't get. This is all in the manual, so this is just a summary of the steps.