index.phpcria instância de aplicação ( \Magento\Framework\App\Http) usando ObjectManager (que é criado antes que na inicialização) e chama o método launch.
A instância do aplicativo Http faz o roteamento inicial: é necessária a primeira parte do URL para descobrir qual área deve ser carregada (admin / frontend / rest / ...).
Quando area é definida, a configuração dessa área é carregada (diferente do Magento 1, onde toda a configuração foi carregada).
Em seguida, o objeto de aplicativo chama Magento\Framework\App\FrontControllerInterface::dispatchda área solicitada. O Front Controller faz o mesmo roteamento do Magento 1: todos os roteadores são iterados para corresponder à solicitação. O roteador que corresponde à solicitação retorna a instância do ActionController correspondente FrontController. Esse processo é mais eficiente porque somente roteadores de uma área são usados (o roteador de administrador não é usado no front-end). Todo o comportamento extra foi movido do controlador frontal para os controladores pluginsde FrontControlleração e de ação.
Quando FrontControllerobtém a instância do controlador de ação, ele chama dispatch. O controlador de ação executa sua tarefa e retorna a instância de alguma implementação de ResultInterface(como página, redirecionamento, ...).
FrontControllerapenas retorna ResultInterfaceà Instância do aplicativo que renderiza a resposta.
Fiz uma apresentação sobre isso no Meet Magento NL:
http://www.slideshare.net/Dutchento/anton-kril-mm15nl