If I installed Postgres on coLinux, would it be as fast as installing Postgres natively on Windows? How much of a difference in the coLinux instance would there be if the data were stored in a mounted NTFS drive as opposed to an ext2 file on top of NTFS?
I guess it depends on exactly how it works. In theory, if compiled in a method that requires Win32 to execute it then what you have is Windows clock-cycles to process the linux kernel instructions to process Postgres SQL instructions.
In effect, Postgres SQL talks to the Linux API which is executed "by Windows".
I say in theory because things like Intel VT-capable chips actually run virtual machine instructions on the host cpu directly if they can (rather than emulating a CPU), so the only slowdown is the Virtual container startup and communicating UI with the host through things like remote desktop / VMware consoles.
Also, for a long time we've had technologies such as .Net, Python, Java etc which either compile and interpret at runtime or add some other processing layer on top of the Windows API. These apps are not massively slower than native Win32 Apps for most uses.
So, I'd answer: yes, it is probably slower. How much slower and whether that is crucial to you, I don't know.
For the NTFS mounted vs ext2 on top of NTFS, in one case you have a virtual filesystem executed by a potentially virtual kernel. In the other case, the "virtual" kernel will be using its own ntfs-3g drivers to read the hosts filesystem. I'd suggest mounting NTFS would be faster in this case, but again, by what margin and whether your application's performance would suffer as a result depends on what you're trying to do. Either way, it is probably slower than the native PostgreSQL option.