Put simply, Checkstyle is a tool for enforcing coding standards. It has a modular design that allows specific checks to be configured, and Checkstyle is easily extended by writing custom checks. The architecture is geared towards performance, allowing for Checkstyle to run quickly and operates by analysing the source code. There is some overlap with tools like PMD and FindBugs, but these tools focus more on design bugs and run much slower. Personally I recommend running all three tools on any project.
The 4.2 release contains a number of bug fixes and minor enhancements, the most significant being support for suppressing errors at a finer level than the check class name. To explain how this is useful, imagine you configure the GenericIllegalRegexp check twice, once to detect trailing white space (to reduce conflicts on code merges) and another to detect calls to "System.out". Previously it was not possible to just suppress the check to detect calls to "System.out".
To what extent is the establishment and enforcement of coding style standards a good idea? When is it appropriate, and when not? What's your opinion?