${variable} is regular parameter expansion. The braces can be used to delimit a variable name when expanding in the middle of another string. For example, if you wanted to expand $variablefoo, the shell would have no way to know where the variable name ends. By using ${variable}foo instead, the shell knows exactly what you mean.
The braces also allow for a various other operations to be made during expansion. Your example above deletes what the expression matches, from the left. If given a string such as a path /a/b/c, it will return c. This is effectively equivalent to what basename does, but parameter expansion can be more convenient and readable in some situations.
There are various basic string operations that can be performed with parameter expansion. Being a built in operation, they are generally better performing than sed or awk when doing simple tasks.
If you are into shell scripting, I suggest you read this guide on the bash hackers wiki.