Porque cuando haces esto
$bg2 = explode('>',$bg[1]);
La parte que va ANTES del caracter entre las comillas, es siempre $bg2[0], y lo que va DESPUES siempre sera $bg[1]
Por eso mismo.
$bg = explode('<meta name="keywords" content="',$texto);
Con eso divides el codigo guardado en $texto en dos partes,
$bg[0] => Ahora contendra la primera parte es decir, el codigo antes de <meta name="keywords" content="
$bg[1] => Ahora contendra la segunda parte es decir, el codigo DESPUES de lo de meta name...
$bg2 = explode('>',$bg[1]);
Con esto dividimos la segunda parte del codigo anterior, en otras dos partes.
$bg2[0] => Ahora esto contendra el codigo ANTES del caracter > (Es decir, el texto que quieres sacar)
$bg2[1] => Esto contendra el resto del codigo, es decir, el texto despues del caracter >
Espero que lo hayas entendido, se que no soy muy buen profesor, pero si tienes alguna otra duda no dudes en hacermelo saber,
Un saludo