Разница между main и wmain - это тип, используемый для представления аргументов в программе. Функция main использует обычный char, тогда как wmain использует wchar_t, который может принимать значения unicode
main - это нормальная точка входа программы в c и С++ и передается командная строка в одиночных байтовых символах. wmain - это альтернатива, которая используется во многих программах Windows для программ Unicode, где вместо этого передается командная строка в виде широких 16-разрядных символов юникода.
Я считаю, что это расширение Windows для Unicode-программ.