Tak z głowy...
Mianowicie dlaczego w systemie linux są dwie wersje pythona 2.7 i 3.x ?
Bo 2 i 3 są niekompatybilne na kilka ważnych sposobów. Wiele skryptów nie zostało od razu zaktualizowanych by działać na 3, więc przez jakiś czas systemy wspierają obie wersje.
czy jeśli na default ustawie na python 3.6
Słabo wiem, co masz na myśli przez "ustawić default".
Co do tworzenia środowisk:
virtualenv nazwa
python3 -m venv nazwa
robią w zasadzie to samo, z dokładnością do wersji Pythona przypisanej do środowiska. Natomiast możesz jeszcze ręcznie wymusić konkretną wersję:
virtualenv --python=/usr/bin/python3 nazwa
W wirtualnym środowisku, `python` i `pip` wskazują na wersję Pythona przypisaną do środowiska. Więc w środku virtualenva nie musisz pamiętać czy używać `pip` czy `pip3`.