Any phone you'll get will draw power from the battery, not directly from the charger. Let's make some assumptions:
- Your phone takes 2 hours to charge when off.
- Your phone always uses constant power when on.
- Your phone drains a full battery in 8 hours.
- Charging and discharging is completely linear.
So if you plug your phone in when it's completely drained and turn it on, it will be charged to 75% (100% - 2/8) after two hours. It'll take 3 hours and 20 minutes to charge fully.
As illustrated above it will take longer to charge the battery when the battery's being drained at the same time. Obviously, none of the assumptions hold in real life, but it's more or less accurate. Certainly it will charge the fastest when off.
As for the question of CPU scaling, that's very interesting. The rate of battery drain affects the maximum rate of charge, so less CPU work means less drain and a faster charge. I'm not totally convinced that underclocking the CPU will achieve this, though. If your phone is idle it should already be doing a negligible amount of work. Slowing the CPU will make that little amount of work use the CPU for longer. It's almost certainly chipset-dependent whether 100 ms at 100 MHz take more or less energy than 10 ms at 1000 MHz, for example. If SetCPU is altering the voltages as well, that further complicates things.