"Inners" are the kind that collect lint. "Outers" are suitable for marbles or other adornments.

Not so simple explanation: an inner class is declared within the file of another class. There are several levels of inner classes, too, with each level having varying access to the containing class. They're useful mainly for callbacks; if you see someone talking about closures or anonymous blocks, then the closest Java analog is an inner class.