A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable.
This helps isolate your environments for different projects from each other and from your system libraries.
Virtual environments are sufficiently useful that they probably should be used for every project. In particular, virtual environments allow you to: