Sorry, can only answer some of your questions, but i'm sure others will chime in additionally

I've done alot of testings and research, and imho, ultravnc is the premiere vnc solution for windows, hands down. Tightvnc made great leeway with the tight encoding, but Rudi and Sam with vdacc and esvnc, later ultr@vnc blew anything else away on win32 platform from then on till now

Unfortunately, it is windows only, but viewers on all platforms can connect to ultravnc fine through the standard VNC protocol. I cannot say how dependent the file-transfer is on windows, as never used it(I use ssh - cygwin on windows, for both file-transfer(scp) and encryption). From linux you can use any viewer, but I recommend the viewer from ssvnc from Karl Runge - it supports most of the special things ultravnc supports, like encryption, chat, filetransfer, mslogon etc. Note, I haven't tested if the file-transfer actually still work - ssvnc isn't developed anymore for several years, so things in ultravnc could have changed so making file-transfer not be compatible anymore.
Yeah, ultravnc works with all your required windows versions.
The encryption supported i'll paste the info provided from the ultravnc encryption plugin's page:
Default configuration uses 2048-bit RSA keys and 256-bit AES keys.
RSA public-key cryptography supports 512-, 1024-, 2048-, and 3072-bit keys.
Configurable choice of symmetric ciphers and keys:
AES: Supports 128-, 192-, and 256-bit keys.
Blowfish: Supports 56-, 128-, 192-, 256-, and 448-bit keys.
IDEA: Supports 128-bit keys.
CAST5: Supports 56- and 128-bit keys.
ARC4: Supports 56-, 128-, 192-, and 256-bit keys.
Edit: Just tested, and ssvnc works nicely with ultravnc file-transfer. Note, on non-reparenting WM's like ratpoison and dwm, I had to first run: "export _JAVA_AWT_WM_NONREPARENTING=1". I used JRE7-openjdk to test with, as lightest JRE for my distro. Either use it direct from ssvnc(the GUI frontend), or do like me and use just the ssvncviewer, and run with:
"ssvncviewer <IP/host:port> -env SSVNC_ULTRA_FTP_JAR=/usr/lib/ssvnc/util/ultraftp.jar".