First question:
Expanding variables (often called variable interpolation) means to replace the variable name with its data. So, if you have
$greeting = "Hello, world!";
print "$greeting";
It will print "Hello, world!". However, if you were to use
print '$greeting';
the single quotes would suppress the interpolation, and it would print literally "$greeting".
Second question:
You are correct in what you think the values mean, but you are incorrect in your understanding of how that works in relation to a regular expression. The way the regular expression engine works is to start from the beginning of the string, and try to match the expression.
It grabs characters and compares them to the expression, stopping and backtracking when it fails. So, it grabs "1" and compares that to "[0-9]", and matches. Then it grabs "9" and compares "19" to "[0-9]{2}" and matches. Then it grabs "8" and compares "198" to "[0-9]{2}-" and fails. So, it backtracks. It knows that starting with the first character won't match, so it grabs the second character "9" and compares and matches. Then it grabs "8" and compares "98" and matches. Then it grabs "0" and compares "980" and fails. So, it backtracks again. It grabs "8" and compares and matches. Then it grabs "0" and compares "80" and matches. Then it grabs "-" and compares "80-" and matches. On and on, in this case, matching completely. See, it doesn't truncate what it found, it just starts finding what you asked for at a different place than you thought. ;-)
In the second case, it can never find the string "-[0-9]-", so it fails.
There are a couple of ways you can try and limit the search even more. You can try and anchor the match to either the beginning of the string: "([0-9]{2}...." or the end of the string: "....{1,2}$". You can also look for a "word boundary" to make sure that there is nothing before the first part: "\b([0-9]{2}....".
There are several modifiers that you can use on regular expressions to define what you are looking for. You already know about {n} and {n,m}. There are three other popular ones, "+", "", and "?". In reverse order, "?" is equivalent to {0,1}, it means optionally find one of the previous character. So, you might say something like "cars?" to mean either the singular "car" or the plural "cars". The "" means {0,} (zero or more). The "+" is {1,} (one or more). The more in the "*" and "+" case can be (roughly) infinite.