${parameter:=word}:
If parameter is unset or null, the expansion of word is assigned to parameter.
The value of parameter is then substituted.
Positional parameters and special parameters may not be assigned to in this way.
${var:-value}:
if ${var} is set and not null, or value otherwise.
The ${var-value} construct is similar, but checks only that the variable is set.
${var:=value} and ${var=value}:
if var is unset (and also set, but null for the := form).
${var:?message}:
display message to stderr and then exit if var is unset or null.
This should generally not be used within ebuilds as it does not use the die mechanism.
There is a ${var?message} form too.
${var:+value}:
if var is set and not null, or a blank string otherwise.
There is a ${var+value} form.