POE is written in plain Perl, so it is compatible with Windows to the same extent that Perl is. However, the parts of Perl that are supported on Windows seem to vary as new builds of Perl and Windows are released.
The general rule seems to be that Perl's compatibility with Windows (and so POE's) increases as new Perl builds are released, and it decreases as Microsoft updates Windows.
Thanks to the fine support of Windows users, POE tries very hard to work around known problems. It defines constants that aren't present in ActiveState Perl. It skips tests that assume Unix-like environments. It does things in Windows ways where it can. Whatever POE misses outright is a bug and should be reported.
ActiveState's PPM will fetch a woefully outdated version of POE by default. For state of the art testing and bug reporting, nothing beats the CVS tree. See Where to get POE for instructions to get a better PPD or to use CVS with Windows.