Paul means what he says
the release version is optimised to run quicker, try it on on a simple piece of code.
code running in debug mode has lots of checks to make sure things are all tickety boo. In release version these checks are removed (because the coding teams has done lots of test to make sure there are no problems like arrays indices going out of bounds and the like) and the code runs quicker.
on top of this the compiler is free to muck about with the binary code it produces to make it run quicker (obviously there are going to be no problems with this because of all of the tests...)
regarding error messages well they are generally pretty cryptic regardless of which compiler and language you are using when you start out. This is pretty much because you make lots of syntax errors and the compiler can't help much. believe it or not ftn95 is probably the least opaque fortran compilers on this front.
Have a go with the F# compiler if you want really cryptic error messages, or the visual studio c++ compiler.
Carl