Para entender las principales diferencias creo que es mejor primero ver que es lo que hace cada una de estas variables reservadas.
$_POST:
Es una matriz asociativa de variables que fueron obtenidas por el método HTTP POST. Por lo general son enviadas por un formulario.
Ej:
El form tiene un input con id/name igual a Nombre, nosotros le ponemos el valor Pablo, luego hacemos print $_POST['nombre'], y obtendríamos Pablo
$_GET:
Es una matriz asociativa de variables que fueron obtenidas mediante parametros URL. Son enviadas en la url:
Ej:
Tenemos www.agevaled.com.ar?nombre=Pablo, ahí obtenemos si hacemos print $_GET['nombre'], obtendríamos Pablo.
$_COOKIE:
Es una matriz asociativa de variables que fueron obtenidas mediante HTTP Cookies.
Ej:
Se tiene que setear una variable cookies antes, por ejemplo setcookie(“nombre”, “Pablo”); despues si hacemos print $_COOKIE['nombre'], obtendríamos Pablo.
$_REQUEST:
Es una matriz asociativa de variables que contiene todo lo que contiene $_GET, $_POST y $_COOKIE.
Resumen:
Por lo tanto lo que podemos llegar a ver, es que, tanto $_GET, $_POST y $_COOKIE obtienen las variables de distintos métodos de envíos, por su parte $_REQUEST es una variable “superglobal” la cual encapsula todas las otras variables reservadas.
fuente | agevaled