Виртуальное окружение используют, чтобы зависимости разных проектов не пересекались. Например, на одном из проектов нужно обновить psycopg, а на другом нет.
Ну вот, один пункт разницы установки для меня понятен.
А как допустим, Postgresgl реагирует на работу сразу нескольких экземпляров psycopg? Его это не нагружает больше, чем если бы он работал с одним глобально?