Why must we supply a port number in addition to an IP when sending a request?
Porque o protocolo TCP (e UDP) exige isso. Faz parte da especificação do protocolo.
What happens if we send a request without specifying a port for the server socket?
Bem, se você não especificar um número de porta, haverá, presumivelmente, zeros nessa parte da chamada da API. A porta 0 é uma porta reservada e algumas implementações a utilizam para significar que uma porta é alocada dinamicamente pelo sistema.
Is there a way to setup a machine so that instead of having a process listen on a particular port, I have all requests sent to my IP address be handled by the same process?
Não se você usar protocolos de camada de transporte TCP ou UDP ou qualquer um dos protocolos de nível de aplicativo criados neles. Como HTTP
Em alguns sistemas operacionais, há um único processo como parte do sistema operacional, mas ele transfere conexões para aplicativos específicos.
could I have it so that my IP address routes to my RPi
Você poderia configurar o roteador para rotear todos os pedidos de conexão de entrada para o seu rpi
people just connect to the IP address, sans port number, to connect to my server.
Não usando protocolos padrão, como HTTP.
Acho que não é possível usar APIs padrão, como o Berkely Sockets. Eu imagino que você poderia, com algum esforço, usar um diferente, ou novo, protocolo de camada de transporte do seu próprio desenvolvimento. Você precisaria de algumas razões bem sólidas para ir a todo esse inconveniente.