That's not really what's meant by backwards compatibility. Backwards compatibility generally means your current OS can run your old software without having to install a raft of older (and likely insecure) versions.
Windows accumulates backwards compatibility "hacks" over time meaning you likely have a fairly decent chance of running your older software where vendors misused API's in ways they ought not to have.
Of course there are the usual caveats about running 16bit apps on 64 bit Windows where you'll need to find a 16bit emulator.
> Windows forces you to use a new version
It doesn't. If you were running Windows 7 or 8 on the cusp of the Windows 10 roll out, that 20-25 year old app will still run on the currently supported versions of Windows. The "hacks" for that ancient app you still know and love will still be there. Now there are some far away and yet undiscovered edge cases, as in really exotically and mythically rare that yes their hacks might only appear in a future version of Windows.
I'd rather have old software run on a new OS and hardware.
Than access to old OS and hardware to run the software.
Simply because that means you're not reliant on obselete hardware (expensive poor performance hard to find) and potentially a OS full of security holes.
Similarly I'd rather have to use a VM at compile than run time. For convenience.