Есть ли способ отследить состояние Windows приложения из Python?
Как вариант смотреть список процессов в цикле и ждать пока нужный завершиться.
Делать это можно вот этим.  Документация имеется, то, как получать список процессов в ней описано
Есть ещё извращённый способ - использовать WinAPI, чтобы найти в окне приложения тот элемент управления, на котором рендерится сообщение о завершении работы, и периодически опрашивать его текст.
Смотри функции API EnumWindows(), EnumChildWindows() и GetWindowText().
Чтобы вызывать API функции из скрипта на питоне - стандартный модуль ctypes в помощь.