VDN to Skill mapping via historical tables
It's been a while since your original post and you may well have this sorted now, but if not here's my tuppence worth...
Re your first query; Are you using the applications default reports?
Without wanting to tell you your job, are you sure you're referencing the ACD Calls field in your VDN report?
These reports, often have an "In Calls" field which collates information about all contact. An ACD calls is one which must have been delivered to a skill (or skills), whereas the "In Calls" field sums all calls received by that VDN whether the traffic was routed into your call centre or disconnected as a result of your Co's out of hours management.
Do the affected vdns have secondary/tertiary skills assigned?
Traffic that is collated against these skills may account for the different between your primary Skill and VDN.
It is possible to write a custom report to pick up details of calls answered by the 1st, 2nd, and 3rd skill assigned to a VDN. It should be noted that all abandoned calls will abandon against the primary skill. What's more, you can use the vdn data tables to give some indication on how your system is setup with regard to VDN - Skill mapping. Although this will only return "past-tense" information, unless you have a highly dynamic setup this should give you what you need - (If you want some more info on how to do this feel free to contact me directly).
With regard to routing call onto other skills; this can be achieved through the vectors. You can route calls onto any number of skills, though it is usual practice to use just the three that are assigned to the incoming VDN. If you need to route calls onto subsequent skills this can be done by explicitly stating the skill number. If you do this the switch will automatically dequeue the call from the first skill it was routed to. Traffic can be directed under a variety of conditions, (Longest wait, available agents, length of queue, etc, etc)