As for building your VISA app, simply include "visa.h" and link "visa32.lib". Your app will simply search for VISA32.DLL that is currently installed in the target system. The default is what placed in Windows/System32 but it follows Windows' PATH finding rules. What you specially consider when writing/building your app are, do not use any VISA-vendor specific attributes. In fact, NI-VISA has NI-specific attributes that can be passed to viGetAttribute/viSetAttribute but they generate an error when operating with other VISAs. Plus, you must do the operation compatibility check with various kind of VISA versions that your target PCs may install. All the VISA32.DLL from different vendors are ***BASICALLY*** equivalent and interchangeable each other, but not complete. Some specific situations may show different behaviour.
As for VISA runtime environment, basically you should install only one VISA version. For example, if a target PC installs Agilent, then NI-VISA should not be installed. Although there are some special techniques for installing multiple VISA libraries on the same PC at a time, it may often corrupt.