Как правильно закрыть окно?
Почитайте любую книгу по Qt. Сэкономите кучу времени и найдёте ответы ещё на тысячу подобных вопросов.
Как-то так#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QMainWindow mainWindow;

    auto res = QMessageBox::question(&mainWindow, QMainWindow::tr("Just in case"),
                                     QMainWindow::tr("Are you sure?"));
    if (res == QMessageBox::Yes) {
        mainWindow.show();
        return a.exec();
    } else {
        return -1;
    }
}
Смысл в том, что у вас первое окно -- это модальный диалог (наследник QDialog, допустим). У него есть метод exec обычно, который возвращает результат (например согласился пользователь или нет). На основании результата и решайте, что делать дальше: показать окно или выйти из программы.