Groovy is one of a number of "dynamic languages" that have become popular recently. Groovy is reminiscent of Smalltalk in that the object model allows object types to be modified as the program runs and its use of closures. It's other distinguishing feature is a flexible mapping into the Java JVM that allows existing Java libraries to be accessed via several convenient syntaxes. Java code can also invoke Groovy allowing an application to use the more suitable language for various parts of a project.
Grails is, as the name suggests, a web framework inspired by Ruby-on-Rails. I've not used either of these for significant projects, but they both appear to address a lot of the tedium of managing user access and session control that I experienced using JSP nearly a decade ago (so some progress is being made in the industry).
This book doesn't take the usual didactic approach to teaching a programming language. It assumes a level of competence from the reader and comprises an enormous number of worked examples or "recipes". These focus on showing how accessing various technologies can be accessed easily from a Groovy program. The Grails framework is the technology treated in greatest depth - the Grails related recipes take up most of the second half of the book.
Taken in large doses the persistent claims that "Groovy is great because you can do *this* like *this*" can be a bit wearing, but that is less of an issue if the book is used as a reference.
There are a lot of tasks for which Groovy is a suitable language - allowing a lot of programmer productivity and this is clearly demonstrated by some comparisons with Java. The recipes in this book provide an easy source of examples for using a wide range of technologies. This does require the reader to have the knowledge to decide what to use and how it fits into the application.