Remember how I said block level and not file level. Do not assume that if you have 10 copies of a file that they will dedup. They might not save anything. They'll dedup if they align to your blocks.
Windows doesn't do dedup on the block level from what I've read. And it doesn't do it on the fly as the file is being copied. It does it in the background long after the file has been written(usually you set it to some value like 20 days so that current data isn't deduped since its likely to change and only creates more overhead for the OS to deal with. Window's dedup doesn't work anything like ZFS' does. It's not inline. It looks that way to you the user, but it doesn't if you look at anything besides the "used space" and "free space" on the disk. If windows had wanted to do on-the-fly they'd have to maintain big dedup tables just like ZFS. That's why the didn't do on-the-fly. ;)
As for why it isn't deduping I don't know. I generally consider people to be crazy if they try to use it because the consequences are so abrupt, quite irreversible, and generally any money you think you'll save on storage space you WILL spend on RAM(sometimes an order of magnitude more). Once you need more RAM, you need more RAM period. No warning message. No "undo". You buy more RAM or you kiss the pool goodbye. And if you aren't using ECC RAM, well, just another vector to kiss your data goodbye. You have to enable it on the pool before you start copying files, and only new files(and new/changed blocks) will be included in the dedup table. Just like if you turn dedup off any data blocks that are deduped will still be deduped until all of the data blocks expire.
Dedup is one of those things that can be amazing with a very small pool(like 5TB of less) without an expensive investment in RAM. It also helps with zfs' prefetch caching performance too. But as soon as you start talking about large storage arrays you are definitely not using dedup without very expensive RAM purchases.
Your dedup ratio can be checked with "zpool list" and compression(if enabled) can be checked with "zfs get all | grep compress".