Python versions can be downloaded from site. 

Download the version depending on your platform :-

Below is the link for the same :-

Linux Installation :-

Using Commands,

Now latest Linux flavors come up with already installed python, If suppose python is not installed then you can click here for installing python in Linux

Using Source, 

Please click here to build the python on Linux platform

Windows Installation :-

Please click here to select the python version and install based on your windows platform (architecture)

Installing two versions :-

Linux :-

For the Linux installation using commands as specified above - Specify the version and follow the steps of using commands as above

For the Linux installation using sources as specified above - Download the sources you want to install and follow the steps using sources as above

Python version 2.x can be access using /usr/local/bin/python and Python version 3.x can be accessed using /usr/local/bin/python3 (usually it takes /usr/local/bin path)

Upgrading :-

Using upgrade command like #apt-get upgrade, will upgrade python and everything else in the system. Usually for Python 2.x it upgrades to next or latest version of 2.x and for Python 3.x it upgrades to next or latest version of 3.x 

NOTE :- Install path like /usr/local/bin may vary some times it will be /usr/bin based on system configuration

Please click below some of the useful links which explains more on installing two versions, upgrading etc

Link1 , Link2 , Link3 , Link4 , Link5 

What is VirtualEnv ?

VirtualEnv creates a virtual environment to run different python projects depending upon different versions independently without affecting the other versions.
Please click here for setup and more information of virtual environment. It gives flexibility to develop/run python projects under different python versions in the same system. 
Otherwise we need to install two versions of python and run python for python2 project and run python3 to execute/develop python3 project and also sometimes need to setup paths, links etc. This might affect project development,speed etc