The second edition has more than 100 pages of material that was not covered in the first edition, about 30 pages of dropped material (for example discussion of methods that have been deprecated since JDK1.0), and most of the rest was entirely rewritten and updated. The presentation was also reorganized.
If you have both editions, the only reason you might want to keep the first edition around is if you need to use one of the few constructions described in first but not second editions that only apply to JDK1.0.x -- for example, using now-deprecated Thread methods. (The need for such constructions is briefly mentioned in second edition, but there are no code examples.)
You need some background in both Java and in OO design, or to be willing to play along as if you did. I usually recommend that people read Arnold and Gosling's. The Java Programming Language as well as Gamma, Helm, Johnson, and Vlissides's Design Patterns.
The book concentrates on concurrent object designs and constructions that are common to these and other kinds of concurrent applications. That's where the idea of ``patterns'' comes in. Successful programming in all of these domains usually also requires knowledge and skills about aspects that don't have much to do with concurrency, as well as specializations of general concurrent design patterns to fit the problems at hand. These issues escape the scope of this book. Also, the application of Java to some of these areas is still very new, and emerging frameworks are still a little too volatile for inclusion in a book on commonly encountered design problems and solutions.
While this is a ``serious'' book, it wasn't written as an academic textbook. However, I have heard from people using it as an auxiliary text in two very different contexts: