در اصل این دو با هم تفاوت ندارند چون هر زبان و هر framework در نهایت باید از api استفاده کند ولی:
MFC توسط microsoft برای ساده کردن آشفتگی های موجود در برنامه نویسی API ارائه شده است.
MFC با encapsulates کردن (در پوشش گذاشتن) توابع API در مجموعه ای از کلاسها این امر را فراهم کرده است. برای مثال کلاس CDialog در mfc، کار تابع DialogBox را در win32api انجام می دهد.
MFC یک قالب از پیش تعریف شده (framework) برای برنامه نویسی ویندوز است، بنابر این نمیتواند تمام نیازهای یک برنامه نویس را پیش بینی کند.
mfc یک کتابخانه جامع مانند C run-time library نیست. برای مثال ساخت سرویسهای ویندوز با mfc به راحتی امکان پذیر نیست و در واقع باید گفت :"Microsoft does not support using MFC to build Windows services" بدین معنا که: مایکروسافت ساخت سرویسهای ویندوز توسط mfc را حمایت نمی کند. اما MFC همچنان از محبوبیت بالایی در بین برنامه نویسان ویندوز برخوردار است.
در مقابل win32api ، هرچند در نگاه اول کمی سخت به نظر می رسد ولی به شما این اجازه را می دهد تا از تمامی امکانات ویندوز استفاده کنید. به طور کلی یادگیری win32api به شما کمک می کند تا فهمی بسیار عمیق و دقیق از چگونگی عملکرد درونی windows و برنامه های کاربردی به دست آورید.
دوباره تاکید می کنم که این دو در بیس و پایه متفاوت نیستند. هر framework در نهایت باید از API استفاده کند.
read windows SDK documents for more informations