You are correct: Task manager does not provide accurate results inside a VM. This KB article will give you some information on why this is the case. If you want to do performance analysis and monitoring of your VMs, you should check the page.
Oh, and to answer your specific question, "How can you tell which processes within a VM are consuming CPU", you can trust the relative distributions within Task Manager. For instance, if it says that process A is consuming 30% and process B is 40%, then those ratios are correct. But the total 70% is not. You'll need to go to esxtop or VirtualCenter to find out how much of the actual CPU resources are being used.
The real problem is that ESXTOP can show that the CPU core(s) are being maxed out by the VM but in Windows Task Manager CPU utilisation can be less than 10%
This makes difficult to establish what process on the Windows box is taking the CPU Cores
Surely someone must have the answer to this?
The KB article I referenced above discusses this. Behavior identical to what you're describing can be caused by idle loop behavior. The OS is aware that the idle looping is not real work but ESX accounts for CPU cycles differently and considers that idle looping a busy wait, of sorts. Details for improving this are in this KB article.