Windows NT 4 has InterlockedExchangeAdd() and InterlockedIncrement() with the correct return value, just like Windows 98. But these functions are not used anymore if STLport is compiled for Windows NT 4. That's a side effect of the Windows 95 fixes.
Both Windows NT 4 and Windows 95 use an API version of 0x0400, but for Windows NT 4 it's WINVER == 0x0400 && _WIN32_WINNT == 0x0400 whereas Windows 95 compatibility is selected by WINVER == 0x0400 && _WIN32_WINDOWS == 0x0400. See http://msdn2.microsoft.com/en-us/library/aa383745.aspx for more details.
If only WINVER is defined it means compiling for both the designated Windows NT-based Windows version and the Windows 95-based Windows version. For example, WINVER == 0x0400 && ! defined _WIN32_WINNT && ! defined _WIN32_WINDOWS means compiling for Windows NT 4 and Windows 95. This is not explained at the MSDN web site, but it's what the Windows platform SDK's win32.mak does if TARGETOS=BOTH is set.
The patch defines a new macro _STLP_WINNT4_OR_WIN98 and replaces all uses of _STLP_WIN32_VERSION with _STLP_WINNT4_OR_WIN98. It also moves the version check after the inclusion of the Windows headers because they set the version macros to default values if they hadn't been defined before.