The "permanent generation" is the area of memory where things very unlikely to be deleted by the garbage collector are loaded. This includes String literals (i.e., "the String pool" you may have heard of) and objects that represent individual classes, including their code. The permanent generation is just part of the heap, and it's not really "permanent" -- when the JVM exits, it disappears. Perhaps it should really be "the long-lasting generation", or some such.
This is a rather advanced topic, and it's neither something you should worry about, nor something that could easily be explained in detail until you've developed some more fundamental knowledge about the JVM itself.