How does conflict resolution work?

Syncthing is not content aware. There is no difference between whitespace or some other bytes, it cares about the checksum of the file. A conflict is simply “I have a change locally that you haven’t observed, you have a different change locally that I haven’t observed”, its a conflict. This doesn’t even need to happen at the same time. Shutdown/pause/disconnect one syncthing instance, modify file on both sides, reconnect, you’ll end up with a conflict.

You can minimize conflicts by making sure the two instances are always connected, or by genuinely not modifying files on both sides.