>> Linux doesn’t have a single set of headers because programmers in the 80s didn’t know better.
I would argue that it does, but because its apparently illegal (obvious exaggeration alert) to package all the parts of a single entity together in one package, it just seems like it doesn't, where as on Windows there's a single package (the Windows SDK) that contains the majority of the relevant stuff.
I do however 100% agree with you on linking to shared libraries. The way Linux compilers handle that is fucking stupid.