With PHP you can define how he engine reacts to errors. You can define whether to show them or not. You can also define specific procedures to be executed if an error occurs(i.e. logging the error with some additional info if necessary). More info here: http://php.net/manual/en/book.errorfunc.php
If your developing, it is recommended you enable it so you can see any errors that may occur while loading the script/page in PHP. Really useful for optimizing your script. If your on a production server, always keep it disabled since it could expose exploits. In any case, it's usually best to enable the log, so you can still debug the production script if needed.
error_reporting directive tells PHP what errors it should display/log. Errors are classified by severity, some are just ignorable, some are fatal and cause PHP to halt. error_reporting directive tells php what errors to display/log in case they happen. Normally people change this value so that most of the "ignoreable" errors are suppressed, although, on a development machine, FULL error reporting must be set. PS: You must also set display_errors = On to see the errors in browser and/or log_errors = On + error_log = C:\WINDOWS\Temp\phperror.txt to log errors in file.