Вызывает операционная система (грубо говоря). Возвращает туда же. И необязательно 0 - 0 это завершение без ошибки.
Например, если вы из своей программы вызовите другую, то через механизмы ОС после завершения второй программы вы получите то, что вернул ее main.