Si se parece al str_replace, por no decir que es el mismo.. xD
Lo e acabado de entender todo, voy a explicarlo por si alguien tuviera el mismo problema que yo.
Las barras \ significan que el caracter inmediatamente posterior lo van a imprimir, esto se usa mucho para escribir las barras invertidas o sin invertir, los corchetes, las comillas, etc.
Los (.*?) será lo que halla en medio, haciendo referencia luego en el array de HTML a los $1, $2,.. según cuantos (.*?) tengamos.
Los /is deben ser como modificadores.
Dejo tambien el código que me ha funcionado del youtube, muchas gracias ^^
Código:
$a = ("/\[youtube\](.*?)\[\/youtube\]/is");
$b = (
"<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"$1\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"$1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>");