Suppose you have a UNIX / Linux server. This does not have any desktop environment like KDE or GNOME running; there's not even a so-called X server running for displaying anything graphically. In other words, you cannot display any frame, dialog, or other components on the screen. All that can be displayed is text through System.out and System.err.
Now suppose that on this system you want to display a frame. Without anything to display the frame on (remember, no desktop environment), how should the system display this frame? The answer: it simply can't, and throws an exception.
If you have such a system and you still need to use some of the classes in AWT / Swing (there's nothing wrong with using a Rectangle or Dimension, for instance), and the system is throwing HeadlessExceptions, you can pass the "-Djava.awt.headless=true" to the JVM to disable some of these exceptions. Still not all, because again, if there's nothing to display a frame on, the frame simply cannot be displayed.