Look at the examples on php.net. First, they start off with: $a = "hello";, and then they have $$a = "world";.
As you can see, there are two $ signs, which denotes that this is a variable variable. $$a simply means "a variable named (the value of $a)". If $a is "hello," then $$a is $hello. If $$a = "world," then we can assume $hello = "world." $$a is the same thing as ${$a}, it's just a shorter form, and it's not as good of a practice.
When you echo "$a $hello," you echo "hello world"!
This is a bit more descriptive than the manual entry.
Also, make sure you read the note about arrays and solving ambiguity:
In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.