I've been using ActiveState on Windows for quite some time at $work. I've found it has most of what I need to get work done, and leaves me in a good position in the unlikely event I need support that it's just a phonecall and credit card away. CPAN does work, but I never use it, as PPM has everything I need currently.
Like others, I can't speak to how multiple different versions of perl will play on the same system.
Cygwin is a nice tool, if you can get it to behave the way you wish. I haven't figured out a way to make it dovetail into the environment as well as I'd like yet, but I will also admit that I haven't taken the time to do so. The only potential problem I see with cygwin is the possibility to have to have it installed on every machine you want to port your code over to. I'm unclear if PAR::Packer plays nicely on it.