Es equivalente a $$index, podés verlo acá (subtítulo "sintaxis compleja")
http://www.php.net/manual/es/language.types.string.php
El manual recomienda NO usar esta forma a menos que sea dentro de una cadena entre comillas dobles, en ese caso las llaves sirven como una forma de decir "acá termina el nombre de la variable", por ejemplo:
"Hola ${nombre}ito, cómo estás?"
no es lo mismo que
"Hola $nombreito, cómo estás"
Ya que en el primer caso se especifica una variable $nombre, mientras que en el segunto php buscará una variable de nombre $nombreito
La particularidad de las llaves es que lo que está dentro de ellas es evaluado, por lo que se puede hacer algo como
${"Una_" . $variable}
(ver el la primer nota de usuario de
http://www.php.net/manual/es/language.variables.php
Bueno, he ahí la teoría.
Lo que en la práctica hace el código que pegaste es crear en cada paso una variable cuyo nombre es $index (por ejemplo, si $index == 'hola', creará la variable $hola)
Esto puede hacerse también eliminando las llaves y escribiendo
$$index = $var;
Podés leer sobre eso en la página cuyo enlace pegué antes.
Saludos.