The short answer is, yes.
A Context is a hash containing information about how MathObjects should be handled. When you create a MathObject (a Formula, a Real, a Currency, etc), that MO itself is a hash that has a reference to a Context (usually the Context that was active at the time the MO was created). For one thing, you can modify that Context mid-problem. Just understand that the MO may be handled differently depending on where in the problem code these things are happening.
Then you can also make new Contexts, changing the active Context. Contexts that were created earlier still exist, and their MathObjects still point to them.
You can have multiple Contexts that are "the same". Meaning, they are different hashes, but have all the same properties.
Example:
Context("Numeric"); # Context "A"
Context()->flags->set(reduceConstants=>0); # modifies Context "A"
$f = Formula("1/2 x^2"); # f is in Context "A"
Context("Numeric"); # Context "B"
$g = Formula("1/2 x^2"); # g is in Context B
$r = $f->eval(x=>2); # $r is a Real in Context "A"
$s = $g->eval(x=>2); # $r is a Real in Context "B"
$r = Real($r); # now $r is a Real in Context "B"
# Printing $f right now in math mode will make `\frac{1}{2} x^2`, because it is in Context "A"
# Printing $g right now in math mode will make `0.5 x^2`, because it is in Context "B"
# Similarly, any context settings that affect answer checking could affect assessing student answers for $f and $g