16 and 8 bits (is there even 8 bits in PCs?) are not the problem at all. 16 bits always worked perfectly fine under XP and a good programmer would really have to explain to me in length why it is actually counter intuitive to have backward compatibility from one system to another. It is a simple matter of converting the already existing compatibility from previous OSes to the new one.
Why would you need a new compatibility setting for Win 98 if it was already built in XP? Same for 95 and 3.1... Etc.
64 bits not being compatible with 32 bits and lower is definitely done on purpose. Not only that, but compatibility actually already exist... You simply have to pay extra for them.
Then again, if the 32 bits programs you used in XP (the vast majority of PC users still use XP even today) would still work with 64 bits then you would have absolutely no incentive at all to purchase completely fine
copies of the old programs you used to run, right?