Olá, Orlando, como vai?
A ideia principal de usar um ambiente virtual é isolar as dependências de um projeto, garantindo que ele funcione independentemente do que está instalado no restante da máquina. Assim, cada projeto pode ter suas próprias versões de bibliotecas sem interferir nos outros. O arquivo requirements.txt entra nesse processo porque permite que outra pessoa recrie esse mesmo ambiente, com as mesmas versões das dependências que você utilizou.
Por exemplo, imagine que você desenvolveu um projeto em Python que usa a biblioteca requests na versão 2.25.0. Se alguém tentar rodar seu código usando a versão 2.32.0, pode acontecer de alguns métodos terem mudado e o programa não funcionar como esperado. Ao ter o ambiente virtual e o requirements.txt, essa pessoa consegue instalar exatamente a mesma versão que você usou, garantindo consistência no funcionamento.
Um ambiente virtual, portanto, não é compartilhado diretamente, mas sim recriado por meio do requirements.txt. Cada desenvolvedor cria sua própria VENV na máquina, mas todos seguem as mesmas versões descritas no arquivo.
Espero ter ajudado.
Siga firme nos seus estudos e conte com o fórum sempre que precisar.
Abraços :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado