Eu uso Flask com Nginx e Gunicorn, então tentarei responder da melhor maneira possível:
1). Pode ser, mas a partir de minha própria pesquisa e experiência, geralmente é melhor não executar o Gunicorn no modo daemon e usar algum tipo de gerenciador de processo dedicado (como o Supervisor).
2). O supervisor e o init.d não cumprem estritamente o mesmo propósito. Init.d é um "Daemon de Inicialização", seu propósito é ser o serviço que inicia todos os outros serviços (como, digamos, Gunicorn). Supervisor é um Gerenciador de Controle de Processos que pode ser usado para iniciar outros serviços, assim como monitorá-los e reiniciá-los se algo der errado. O supervisor, no entanto, ainda precisa do init.d (ou seu sucessor Upstart) para iniciá-lo na inicialização. Eu prefiro usar o Supervisor porque é fácil de usar e permite que eu inicie, pare e / ou reinicie os funcionários do Gunicorn rapidamente.
3). Você geralmente tem algum tipo de ambiente de desenvolvimento dedicado que é uma cópia da produção. Eu pessoalmente uso 3 servidores em nuvem, 1 para produção, 1 para preparação (a.k.a., o campo de testes para garantir que a aplicação seja implementada corretamente) e 1 para desenvolvimento. Encenação e desenvolvimento são cópias da produção.