Virtual memory allows you to concurrently run 10 x 1 GB applications in a 2 GB computer.
Instead of loading the program into memory and giving it some memory for data, VM allocates space on disk (the paging file, or equivalent) for the memory needed by the program but uses "demand paging" to only load into real memory the smaller part of the program and data needed at any point. Less used parts (e.g. some rarely used subroutines) might never be loaded into real memory. When real memory is needed for another program, unused parts of real memory are used, if none, oldest clean pages may be dropped, if no clean pages remain, some "dirty pages" of memory are written out to the paging file (if the page is the same as the original loaded from the program binary file, we don't need to save an extra copy). VM keeps track of all this.
In the past, a separate and more desperate method of memory management called swapping was also sometimes needed. Nowadays the terms are used almost synonymously.