You are confusing two very different notions of "variable".
When you write:
sage: x = 5
The Python name points to the integer 5.
When you write:
sage: reset()
or just
sage: del(x)
you remove the name x from the global namespace.
In the symbolic expression cos(x), the x is not a Python name but a mathematical symbol, it is an object, like the integer 5 above.
The confusion might come from the fact that, at Sage startup, the Python name x points to the symbol x:
sage: x
x
sage: x.parent()
Symbolic Ring
sage: x.is_symbol()
True
But once you write x=5, the Python name x now points to the integer 5, and there is no way to let it remember that it used to point to the symbol x. If you want the Python x to point to the symbol x again, you can do:
sage: x = SR.var("x")
This is a very common confusion, see the tag variable_issue, this question or that question.