Olá Victor, tudo bem?
1- Se todas suas aplicações estiverem no mesmo servidor e este ficar fora, sim as aplicações ficaram indisponíveis (por isso a importância de conceitos de alta disponibilidade, balanceadores de carga, etc ... dependendo do nível de disponibilidade e desempenho esperado projetado para aplicação, não somente o deploy deve ser em servidores diferentes como em regiões geográficas diferentes para manter app disponível.
2- Se o meu app 1 precisa da versão X do PHP e o app 2 precisa da versão Y ... é preciso ter claro a diferença do que é uma imagem docker para um container docker, imagem que vc faz download do DockerHub por ex PHP 4 e sobe um container com base nessa imagem, se vc vai executar no mesmo ambiente um container PHP 5, o docker tem a capacidade de baixar somente a diferença entre as imagens das versões do PHP, reutilizando oq há em comum das 2 imagens. Isso ocorre em função da questão de camadas usadas para construir a imagem, mesmo que sejam coisas bem diferentes ... digamos que uma imagem python3.9 tenha sido elaborada com base em um alpine linux e após baixar essa imagem você vai subir um LAMP ... tudo o que for comum na imagem para subir um novo container é reaproveitado das imagens que já estão no docker host.
3- O docker faz uso de de features do Kernel Linux (cgroups, namespaces, SELinux, Netfilter, Netlink, ...) e o kernel é a camada de interação com hardware. No caso de dualboot, vai funcionar como se fosse 2 máquinas completamente distintas e o que muda é que Docker no MacOS e no Windows (no WSL é um pouco diferente) sobe o docker com base em um Alpine Linux e fornece uma camada de abstração que é o docker desktop ... no Linux ele funciona nativo compartilhando o mesmo kernel do docker host com os containers.
Um abraço e bons estudos.