MVC is a software architectural pattern that allows you great seperation especially that of domain logic, user interface, business logic etc and allows for a total seperation of concerns and allows for independent logics to be developed seperately and tested seperately as well as ease of testing multiple versions of implementations without much ado.
Model is if you like the entity that describes everything that you want to capture including its behaviour although most people think of it in terms of a database table, but its merely a storage model and model combines everything.
View is if you like the UI that you interact with
Controller is the one that drives the interaction between View making or taking changes that happen on model.
MVVM if you like is same as MVC but it uses an extra View Model to help with the UI and this View Model sync with the model via controller.
The architecture that also encompases best practices like repository pattern, IOC etc.
A quick e.g. of say a person model
class Person
{
int id;
string type;
}
Now a View model that will help with the UI may have a dropdownlist to poplulate types of persons so a ViewModel for same model may be
Class PersonViewModel
{ //Pseudo code
SelectList {mytype, yourtype}
}
This may than be used in view as
//PseudoCode
Dropdownlist(slectList)
Hope this helps