Dá uma olhada na imagem abaixo:

Agora suponha que você está acessando um aplicativo web escrito em Java.
Seu computador representa o Web Client da figura. Todo o retângulo verde é o servidor web.
Todas as requisições que você envia - seja um clique em um link, dados de um formulário ou solicitação de download de arquivo - são processadas pelo servidor web. Quando o tratamento da requisição requer algum processamento, o servidor repassa a requisição pro servlet container, que é um subcomponente do servidor web responsável por executar os servlets.
O servlet container então criará um objeto que implementa a interface HttpServletRequest, criará um outro objeto que representa a resposta à requisição e implementa HttpServletResponse, decidirá qual o servlet a ser executado através da URL da requisição e chamará seu método service() passando os dois objetos criados. Quando o servlet terminar sua tarefa, o servlet container repassa a resposta para o servidor web, que por sua vez a enviará de volta para o cliente.
Então, respondendo suas perguntas:
Quem recebe as requisições HTTP é um servidor web.
Quem gerencia o ambiente de servlets é o servlet container. O Tomcat é um servlet container. Portanto, o que você falou não deixa de estar correto.