معماری ویندوز به شکلیه که کلاً چیزی به نام Procedure نداریم و فقط Function داریم، همونطور که میدونید Function ها حتماً باید یه چیزی رو برگردونن (خروجی داشته باشن !) خب تابع Main هم در واقع موقع اجرا شدن برنامه توسط ویندوز چیزی جز یک Function که توابع دیگه ای رو فراخوانی می کنه نیست! خب ما در برنامه نویسی معمولاً وقتی قصد انجام کاری رو داریم، بعد از انجامش چک می کنیم ببینیم که اون کار درست انجام شده یا نه ! اگه با API ویندوز آشناباشی میدونی که اکثر توابع از نوع منطقی هستند و True یا False رو برمی گردونن که True بودن نشان دهنده اینه که تابع کار خودش رو به درستی انجام داده، خب وقتی ما Return 0 رو ته برنامه می ذاریم به ویندوز میگیم که کار برنامه با موفقیت به پایان رسیده !البته مقادیر دیگه ای هم هست که در موارد خاص استفاده میشن. حالا اگه شما اینو نذاشتی و خطایی هم رخ نداده دلیل بر این نیست که نباید این کارو کرد. اطلاعات بیشتر در کتاب های مثل Windows system programming windows via c/c++ موفق باشید.