Today I thought I would update the windows 7 node (a few days behind) by copying the latest 'blocks' files and copying the whole 'chainstate' folder.
That is guaranteed to not work. Nodes download blocks out of order so they will get written to disk in a different order which depends on the order that blocks were received. If you copy the database from one node to another, that database will be incorrect and say that blocks are exist at a particular location when they actually don't. Furthermore, you didn't copy the block index which is in the index folder inside of the blocks folder. That actually says where blocks are actually located and, IIRC, the chainstate database contains references to the block index. If you want to copy the blockchain from one node to another, you must copy the entirety of the blocks folder and the chainstate folder so that the correct databases and indexes are included.
I noticed that not all of the previous .dat files were the same size (more than just the latest on the out-of-date node) and I have no idea why.
Not all blocks are the same size and not all .dat files contain the same blocks. As such, not all .dat files will be the same size. As I mentioned, blocks are downloaded out of order. Furthermore, one node may have received blocks that another node has not. Thus the size of the .dat files will vary based on the contents of the file.