Respondo a la primera parte. En función de los recursos de computación usar una función interna del lenguaje es "mejor" porque el intérprete no necesita gastar tiempo interpretando código, simplemente ejecuta el codebyte de esa función.
Es posible que aún usando funciones internas el código interpretado resulte más eficiente, si para este caso se puede demostrar eso pues no tengo problemas en aceptarlo, no me sorprendería.
Yo parto de la asunción de que la función preg_match_all, al ser una función interna del lenguaje está altamente optimizada a nivel de código máquina, algo que es imposible de hacer en un lenguaje interpretado como PHP para funciones escritas por el usuario.
Respondo a tus preguntas.
Ese var_dump se me escapó :).
Pasa que para resolver tu problema me puse a programar la solución que se me ocurrió y cuando obtuve la solución que esperaba la copié tal cual. Suelo usar var_dump durante la etapa de codificación para estar seguro de que las variables tienen los valores que espero que tengan, o sea, era nada más que con fines de depuración, puedes quitarlo tranquilamente.
Respondo la siguiente pregunta.
Las expresiones regulares son un metalenguaje y como tal tiene sintaxis, cada símbolo tiene significado. Te comento, sin pretender dar un curso de regex, qué signfica cada parte de la expresión regular que usé.
\b
Significa "separador de palabra". En regex un separador de palabra es un espacio en blanco, un caracter tabulador, un salto de línea o el inicio o final de la cadena, como está al principio en esta expresión significa "que la palabra sea la primer palabra en el texto o esté precedida por un espacio en blanco, tab, crlf, etc..."
\w
Significa cualquier caracter alfanumérico. Es decir letras y números y el guión bajo.
{15,}
Las llaves indican cuántas repeticiones del símbolo anterior se considerarán, las llaves indican un rango, por ejemplo si hubiese puesto {15,30} querría decir "entre 15 y 30 veces cualquier caracter alfanumérico", pero como dejé vacío el segundo parámetro quiere decir "igual o más 15 caracteres alfanuméricos", si hubiese escrito {,15}, querría decir "no más de 15 caracteres alfanuméricos. Ten en cuenta que las llaves {} deben estar precedidas de un símbolo (o un conjunto de símbolos) para considerar su repetición.
Por último, las dos barras al principio y al final de la expresión son un requisito de PHP, le indican a la función preg_match_all dónde empieza y dónde termina la expresión regular. Porque en regex se pueden poner modificadores de significado para algunos símbolos, esos modificadores se ponen a continuación de la última barra (en mi caso no usé ninguno y ahora que lo pienso me parece que sería buena idea usar los modificadores "i" y "s" así: "/\b\w{15,}/is" ).
Mientras escribo esto se me ocurre que todo esto se puede mejorar pero creo que como ejemplo es suficiente.
El tema de expresiones regulares es muy ámplio y está bien documentado. Te siguiero que hagas una búsqueda de tutoriales y te bajes este programa que a mi me resultó extremadamente útil para "depurar" expresiones regulares:
http://weitz.de/regex-coach/
(Para Windows unicamente)
Espero haber satisfecho todas tus dudas.