Respostas:
As perguntas são um pouco estranhas, não está claro se você está pedindo apenas PHP ou se sua pergunta é mais geral.
Vou dar uma breve visão geral do lado do PHP.
Primeiro, os dois protocolos:
Scripts CGI é uma maneira de executar um script do lado do servidor quando uma solicitação HTTP chega; isso não tem nada a ver com PHP
O FastCGI é um "CGI melhor" - o CGI é lento, o CGI rápido é uma abordagem diferente, com resultados muito mais rápidos; isso também não tem nada a ver com PHP.
Agora as coisas relacionadas ao PHP:
O mod_php está executando um PHP como módulo Apache - ou seja, a solicitação do PHP é executada no processo Apache com tudo o que acompanha - os processos Apache são definidos pela configuração do Apache, o PHP é executado com a permissão Apache etc.
PHP-FPM é a implementação FastCGI do PHP; O PHP-FPM é executado como um servidor FastCGI independente e o Apache se conecta ao servidor usando o módulo do Apache, geralmente mod_fcgid ou mod_fastcgi; Pessoalmente, acho que isso é muito melhor do que executar como mod_php, mas depende de seus requisitos e também é um pouco mais complexo; nesta configuração, permissão, processa coisas relacionadas e tudo é executado na configuração do PHP, usuário do PHP etc. O Apache se conecta ao PHP como um servidor; nessa configuração, também é possível ter um pool de servidores PHP e um servidor PHP em uma máquina fisicamente diferente do Apache. Eles dizem que isso é quase tão rápido quanto usar o módulo do Apache e existem benefícios de um melhor controle sobre a configuração do PHP.
SuPHP - foi usado principalmente para resolver alguns problemas do mod_php relacionados a permissões; com mod_php, scripts PHP são executados no grupo / usuário Apache; mod_suphp pode executar os scripts em diferentes usuários; Eu nunca usei, o PHP-FPM agora deve ser uma escolha muito melhor
Então, basicamente: