1)
Why REST:
Just think of the MVC pattern.
Model-View separation makes especially sense if you have multiple views of the same content.
Now think of REST as a machine-friendly view via an application specific protocol which is easy to implement. Making your application also useful to other developers who want to integrate your application as a web service into their own apps.
REST is an application integration technology.
REST is a good choice if you want to offer a machine and developer friendly web service API to your application.
2)
REST vs RPC
REST should be per definition implemented in a stateless manner.
RPC calls are remote method calls on objects or session variables, which makes RPC APIs stateful and in many situation more expensive.
3)
Different REST styles
The problem with REST is it's not always easy to map all operations of an object on the common HTTP methods GET, POST, PUT, DELETE, OPTIONS.
Obviously CRUD can be implemented by assigning the 4 CRUD operations on to the GET, POST, PUT, DELETE methods.
But you can also codify in the HTTP body of the POST method the kind of operation, which is the minimalistic GET,POST style of doing REST.
The problem is not all HTTP clients can send a PUT request.
The solution advocated by the CRUD style services is to emulate a PUT request by annotating a POST request with a special HTTP header:
X-HTTP-Method-Override: PUT
But this does not solve it, because some exotic firewalls remove this non-standard HTTP header.
Roy Fielding, who coined the term RESTful API, mentions also that he think it is well possible to design a perfectly RESTful system with just GET and POST.
4)
Adding REST to an existing MVC web application requires at least the implementation of an extra RESTful controller which translates the HTTP method verbs PUT, POST, DELETE into operations on the model object identified by the request URI but often also the implementation of a more machine-friendly view (JSON,XML,...).