I already commented on Win98. This is the only item which can be highly problematic. If you could exclude it from support (I highly recommend it), you would be fine.
Well, on every part of Windows API you need to look for Microsoft documentation and check up the list of compatible platforms, as simple as that. Your questions like "what if Microsoft deprecated" can be addressed to Microsoft. It already happens. Fortunately, Microsoft cannot "deprecate" what is already running on a legacy system, but you will probably need to check up the system version during run-time and select different branches of code — during run-time. I wish you could right the code which can avoid it, but you apparently cannot predict the future. Just be prepared.
There is no problem running 32-applications on any of 64-bit platforms. All such application are run on the platform of WoW64. This is a subsystem of 64-bit versions of the Windows systems used for running 32-bit applications. See
http://en.wikipedia.org/wiki/WOW64[
^].
However, it is not possible to mix executable modules compiled for different platforms (CPU architectures) in one process. One problem is that such application can even be compiled but will crash during run-time. You just need to be careful about it. To avoid trouble, you may need to know all your dependencies.
Dependency Walker application can be of great help, see
http://dependencywalker.com/[
^] and
http://msdn.microsoft.com/en-us/magazine/bb985842.aspx[
^].
Presently, Windows supports three Intel CPU architectures: 32-bit x86 and two different 64-bit ones: x86-64 (
http://en.wikipedia.org/wiki/X86-64[
^]) and IA-64 (
Itanium, see
http://en.wikipedia.org/wiki/Itanium[
^]). Itanium is the original Intel architecture, more powerful, expensive and rare, x86-64 was created later under the pressure of AMD64 and is more popular and less expensive.
The good thing is: both 64-bit architectures support perfectly identical 32-bit modes, so all your 32-bit applications will work on any of the 64-bit versions of the OS, but you cannot mix executable modules compiled to different 64-bit targets.
Finally, no combination of these three target platforms can be mixed in the same process. The only way of inter-operation between components compiled for different targets is IPC.
That's basically all you need to know on this topic. Everything else is up to your development strategy.
Good luck,
—SA