Checked exceptions are exceptions for which the compiler checks if you handle them properly. If you don't catch a checked exception, or if you don't add a throws clause to a method in which a checked exception can occur, the compiler will give you an error.
Unchecked exceptions are exceptions which are not checked by the compiler: you do not need to catch them or specify that your method throws them. If an unchecked exception happens in your application, it's usually a sign that there is a bug in the code. Most of the time it doesn't make a lot of sense to try and catch an unchecked exception - instead, you should just look at the source code and fix the bug.
Classes that extend java.lang.Exception are checked exceptions, except classes that extend java.lang.RuntimeException - those are unchecked exceptions.
Examples of checked exceptions are IOException and SQLException.
Examples of unchecked exceptions are NullPointerException, UnsupportedOperationException, ClassCastException.