Аиограм умеет работать в двух режимах - polling и webhooks. Как я понял, executor позволяет остальным механизмам бота абстрагироваться от используемого режима.
Например, start_polling() просто создаёт реактор (loop) asyncio и запускает в нём задачу self.dispatcher.start_polling(), а потом ждёт сигнала завершения. Ну и еще дергает обработчики on_startup и on_shutdown. Это можно сделать и вручную, при необходимости.
webhooks использует aiohttp для реализации веб-сервера, который будет получать запросы от telegram.