既に Zuishin さんが回答されていますが・・
WinMainとどんな違いがあるのですか?
main() / WinMain() の違いですが、既定の SUBSYSTEM およびエントリーポイントが下記のように変わります。
| メイン関数名 | SUBSYSTEM | エントリーポイント |
|---|
| main | CONSOLE | mainCRTStartup |
| wmain | CONSOLE | wmainCRTStartup |
| _tmain | CONSOLE | mainCRTStartup または wmainCRTStartup |
| WinMain | WINDOWS | WinMainCRTStartup |
| wWinMain | WINDOWS | wWinMainCRTStartup |
| _tWinMain | WINDOWS | WinMainCRTStartup または wWinMainCRTStartup |
SUBSYSTEM はどのような環境向けのアプリケーションを作るか、といった指定になります。
つまるところコンソールアプリなのか GUI アプリなのか、といった違いになります。
個人的な感想ですが、Win32 API の使用例に main() 関数が使われるのは、サンプルコードを短くする為、といった理由ではないかと思います。
<参考>
■ /SUBSYSTEM (サブシステムの指定)
https://docs.microsoft.com/ja-jp/cpp/build/reference/subsystem-specify-subsystem?view=msvc-170
■ /ENTRY (エントリ ポイント シンボル)
https://docs.microsoft.com/ja-jp/cpp/build/reference/entry-entry-point-symbol?view=msvc-170