В чем разница между функцией "HTTP_redirect" и "header location" в PHP? 
  Когда я должен использовать функцию "HTTP_redirect" ? 
  Когда я должен использовать функцию "header location" ? 
Посмотрите, что: http://php.net/manual/fr/function.http-redirect.php -> Руководство по HTTP_redirect http://php.net/manual/fr/function.header.php -> Руководство для заголовок функции
  http_redirect в основном является вспомогательной функцией, что упрощает использование header location , позволяя вам передавать массив для данных GET. 
1) Заголовок в PHP
header () отправляет необработанный HTTP-заголовок клиенту.
 <?php header("HTTP/1.0 404 Not Found"); ?> 
Вышеизложенное (взятое из документации PHP) отправляет обратно 404 заголовку клиенту.
2) Перенаправление HTTP
Перенаправление на указанный URL.
 <?php http_redirect("relpath", array("name" => "value"), true, HTTP_REDIRECT_PERM); ?> 
Вышеизложенное (взято из документации PHP): вывод
 HTTP/1.1 301 Moved Permanently X-Powered-By: PHP/5.2.2 Content-Type: text/html Location: http://www.example.com/curdir/relpath?name=value&PHPSESSID=abc Redirecting to <a href="http://www.example.com/curdir/relpath?name=value&PHPSESSID=abc">http://www.example.com/curdir/relpath?name=value&PHPSESSID=abc</a>. 
Заголовок пересылает пользователя на новую страницу, поэтому PHP повторно инициализирует, это похоже на мета-перенаправление HTML, но быстрее.