integer arithmetic inside a checked block will throw an exception if the statement would cause either an overflow or an underflow.
unchecked blocks will just wrap round and not generate any errors.
The reason both keywords exist is the default behaviour can be set on a project by project basis - and as such you may need to override that behaviour in certain places.