Is concept of virtual memory about memory isolation or about ability to swap? Or both?
I would say virtual memory is not only about making memory appear bigger than it is, but also about providing many other memory related abstractions, like dealing with pages that are currently not in main memory, adding properties to memory (i.e. non-executability), and standardizing the memory layout of each process. It also allows easy relative addressing in large continuous blocks of data, which might not be able to be allocated contiguously if there was no memory virtualization.

Overcommit in my opinion is less about making it appear as if you had more memory, but more about not actually allocating physical memory if there is no need to do so, like when you allocate a huge chunk of memory "just for safety" which you have no intention of actually using. 

Also, you might be confused about what sets apart overcommit and virtual memory, as they are not really two different things, but overcommit is just a part of how Linux and other operating systems implement their virtual memory.

About your last question, I would say that this is just an instantiation of process isolation (https://en.wikipedia.org/wiki/Process_isolation), using the technology of virtual address space.