这是一个古老的问题, 学习GUI编程的同学都曾经想过这个问题.
首先, Windows某种意义上可以说是用C语言开发的. 早期开发Windows的最基本工具, 应该是win32api, 深入windows编程你就应该至少看一看win32api, 基本上都是C风格的东西.
MFC是win32api的一个包装, 在当年编译器大战的时候还有OWL之类的东西, 后来微软自己还出过WTL这样的东西, 具体可以google.
你的问题里面还问到了Windows/Linux是如何实现界面的, win32api里有GDI这样的东西, 实现的就是非3D加速的图形API, 大约等于Linux里面的GTK. 如果windows里需要3D加速的话, 你使用的API将超出win32api的范畴, 进入到directX, 通常是d3d. Linux里面GTK下面还有一层, 就是X11, 开始直接和硬件(显卡)对话了.
早期的话开发windows用C是完全没有问题的. 后来windows引入了COM技术, C语言就不给力了需要用到C++. 后来一切都dotNET化了, 继续使用C和C++开发windows程序就变成自虐了: 比如GDI变成了GDI+, 那么开发windows就自然而然的是C#的工作了. 最后windows不是唯一的平台了, 大家的选择就多了: Mac, iOS, Android ...