Т.е. exit(0) в моём случае - это std::exit(0) ? (если вызов функции выполняется внутри метода класса, производного от QWidget, например).
В каких типичных случаях такое завершение программы может быть не корректным ? (вызов деструкторов и т.п.)
А если себе в ногу выстрелить, то в кость попадешь или в мегкие ткани? Зависит от ситуации. В любом случае пуля - не хирургический инструмент.
Qt - это фреймвок, а не библиотека.
Отличие фреймвока от библиотеки в том, что в при использовании фреймвока он вызывает твой код, а при работе с библиотекой твой код дергает библиотечные функции. Если сказано вместо main писать QApplication, а выходить из программы QApplication::quit(), то так и надо делать. Если есть свободное время на исследования, то можно открыть исходный текст Qt и разобраться в тонкостях вопроса.