MVVM is (yet another) variation on patterns that separate the concerns of a typical presentation, much like MVC and MVP. Regardless of these variations, the basic concerns are the following triad:
- the Model (the underlying data and domain objects).
- the View (what the user actually sees and interacts with)
- the facade that translates between the Model and View. (the ViewModel in this case)
Doing so leads to benefits on it's own that have nothing to do with the platform technology including the increased testability that comes from taking logic that might be lumped into the View otherwise.
The particular slant in MVVM's ViewModel is that it promotes the use of data binding, which is a strong suit of the technologies that tend to use it (wpf, silverlight).
Theoretically, that's it! In practice, this implies skills and experience with data binding. OOP, and testing - so there may be a learning curve. There is also several ways to execute the pattern, so the first few attempts may seem a bit overwhelming.
But you will have the security of your tests as you gain experience and refactor towards more elegant usages. Testing is essential to any non-trivial project IMO, regardless of its ultimate size. Did I mention that MVVM promotes testability?