Header will forward the user to a specified page somewhat like an HTML meta redirection.
include will include whatever page and run it's code in that page, so basically if would be the same as if you copied the code from the included page and pasted it in the page asking to include that page.
require is the same exact thing as include with the exception that any error will result in a fatal error while include will shoot an error but continue.
From php.net:
The documentation below also applies to require(). The two constructs are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error. In other words, use require() if you want a missing file to halt processing of the page. include() does not behave this way, the script will continue regardless. Be sure to have an appropriate include_path setting as well. Be warned that parse error in required file doesn't cause processing halting in PHP versions prior to PHP 4.3.5. Since this version, it does.