Eu poderia estar entendendo mal, mas parece que você está fazendo duas perguntas: 1. Quais são algumas maneiras gerais de lidar com a resolução de colisões, o termo que você procura é 'simulação baseada em impulso' e há vários papéis que pode fazer melhor justiça do que eu.
Em resumo, você deseja executar uma simulação de física no espaço de momento, que é a massa vezes a velocidade (não faça coisas baseadas na força, seu integrador não está fazendo direito de qualquer maneira).
Para resposta angular, felizmente, os maiores e menores momentos de inércia sempre podem ser reduzidos a dois eixos ortogonais (em 2D), o que significa que uma multiplicação de matrizes funcionará geralmente, e se você alinhá-los com os eixos X e Y, ele se transforma em um vetor 2D.
Quando você colide, descobre a resposta com base nos momentos linear e angular no ponto de colisão, e um bom fator de fudge é, se você tiver interpenetração, aplicar alguma força de penalidade (como mencionado acima) para separar os dois corpos.
A partir do momento, você acabará adicionando mais e mais regras para controlar comportamentos aberrantes, como limitar o momento angular máximo para que as coisas não girem como tops, etc., mas este é um bom começo.
Mantenha-o simples, se puder.
- Como você resolve problemas de colisão de corpos múltiplos
A única maneira real de fazer isso é com um sistema de equações lineares e muita solução. A maneira prática de fazer isso é ter um sistema como o descrito acima e fazer com que a física resolva naturalmente com o tempo.
A maioria dos jogos que fazem coisas como rolar ou ficar de pé em superfícies em movimento tem um modelo híbrido no qual seus pés estão presos a uma superfície (ou rodas na estrada) para acomodar o tempo da física (o que resultaria em ciclos de interpenetração-resposta e não funcionaria).
Espero que isto ajude. Se você precisar de exemplos de matemática, me avise.