To add a more technical explanation, the main point is about the expectation on how it behaves and not what it really does. To get windows to do something, you read the specification (interface) and make a call against it. Windows interprets your request and does what you wanted. You do not care how it works but just that it works. As a developer, you can also switch to the other side and make your own program that interprets these calls and translates, them for linux.
Legally (I am not a lawyer), the specification is a fair game. The spicy part is how it is done and copying that gets you in trouble.
Of course, this is also extremely simplified since linux and windows differ wildly in many regards. Also a “specification” is often incomplete or the implementaion bleeds into the real world use. This makes it not reliable to look at it alone and so, often the “original” implementation has to be observed on how it behaves.
As a more relatable example, think about websites. On the one hand, it does not matter which browser you use. It “just” has to display the page and act accordingly. On the other side, it does not matter what server sends you the page. It could be a pre-computed static page, served via a proxy server or dynamically generated by any of the different programming languages.
Edit: grammar
I read of such stories once in a while. Sadly, I cannot relate because I always played singleplayer games back then, so I missed out on that. But I would like to add that joining pve world events in guild wars 2, there is some chance that there are people chatting publicly like they have known each other for a long time. Not sure what is is worth, though, but it always give good vibes to work together. Me playing mostly wvw (pvp) we (me and my friend) somehow found some likeminded people who invited us to their private voice chat and talk there while playing together. It is not very often, but it is a start, I guess.
Not sure where I was going with that but I though I add what I could I guess. Thank you for reading!