Marc Bächinger gave a presentation how to develop HTML5 browser applications.
You should use REST on the server side because that makes the server and the components of your application easier to reuse.
The main drawback is that you have (often much) more complexity on the client. This can be controlled by strict application of the MVC pattern.
Every browser has its quirks and most of the time, you just don’t want to know. Browser facades try hard to make all browsers similar. Examples are jQuery and zepto.js
Helper libraries and frameworks
gMap, OSM, Raphaël, jQuery UI, Twitter bootstrap.js, mustache, jade
Since the whole application now runs in the client, security is even more important since attackers can do anything that you don’t expect.