Parece que você está usando o premp mpm. A maior parte dessa resposta pressupõe isso.
It appears Apache is creating a new process for every single connection. Is this normal?
Para prefork? Sim.
Is there a way to more quickly kill the sleeping processes?
Tem certeza de que esses processos não estão fazendo nada? Com a sua configuração MaxSpareSevers, você deve ter até 50 processos ociosos. Habilite mod_status e configure ExtendedStatus para permitir que você visualize o placar do Apache e permita que você veja o que está acontecendo.
Should we turn KeepAlive on? Each page loads about 15-20 medium-sized graphics and a lot of javascript/css.
Ativar o KeepAlive é uma boa ideia. Ele permitirá que os clientes enfileirem solicitações e permitam que você reutilize os processos do Apache com mais eficiência.
Como com a maioria dos ajustes. Meça primeiro para criar sua linha de base, depois mude uma coisa e depois meça novamente para tentar determinar qual efeito você pode ter. Usar (e representar graficamente) mod_status é útil para isso.
Você pode usar o trabalhador mpm, o que tende a ajudar no desempenho. No entanto, algumas bibliotecas (notavelmente algumas bibliotecas PHP) não funcionam bem com o worker mpm. YMMV
Para determinar qual mpm você está usando, execute: apache2 -V (ou httpd -V dependendo da distribuição)