@class is for forward declaration of classes. You're telling the compiler the name of the class, and that a full declaration will be forthcoming, but nothing else. This is different to the #import statement, which causes the compiler to parse the full text of another file, typically the interface declaration of the class.
The main reason to use @class is to avoid circular references. Let's say that you have two classes, Foo and Bar. Foo declares an instance variable of type (Bar *), and Bar declares an instance variable of type (Foo *). If you imported Foo.h in Bar.h and vice versa you'd get a compiler error. Instead, you can use @class to forward declare each class in the header of the other, and then import the full headers in Foo.m and Bar.m where the interface details of the classes are actually necessary.
For this reason (and faster compile times, as Eraserhead mentioned) I always use @class in my header files, with a corresponding import in the implementation file.