大雑把に言うと
WindowsはWindows語を理解できる
MacはMac語を理解できる
プログラマーはプログラミング言語を理解できる
コンパイラってのは言語間の翻訳者
プログラミングで書き上げたソースコードをコンパイラに通すとWindows語なりMac語なりに変換される
たとえば「C言語をWindows語に翻訳するコンパイラ」を使えばexeができあがる
あらゆる組み合わせの翻訳者がいるわけではないので変換できない組み合わせもあるし、Windows語にしかない単語や方言、Mac語にしかない単語や言い回しもあるので、どのOSを前提として作るのか最初に決めないと始まらないことも多々ある