All tokens are a replacement for literal text (in fields that parse tokens).
E.G. if you have a text variable named "MyText" with the value "This is some text",
Say, '{TXT:MyText}'
would have the exact same outcome as
Say, 'This is some text'
Tokens that take variables do read the current value as they're parsed, so if you were to change the value of "MyText" to "This is some other text", in the above example the token would be replaced my "This is some other text", rather than "This is some text".
A variable name by itself is meaningless in fields that expect literal text, so if you have
Say, 'MyText'
the TTS engine will just say "my text", as it has no way of knowing that you're referencing a variable.
A caveat to this is that fields that take both tokens and variable names, will assume you're entering literal text if you use tokens, rather than a variable name.
E.G.
Set integer [count] value to 1
Set Text [variable1] to 'text'
Begin Text Compare : [variable{INT:count}] Equals 'text'
End Condition
will not work as expected, as "variable{INT:count}" will be replaced by "variable1", but interpreted as literal text, in which case "variable1" does not match "text"
To make such a comparison work, you need to get the value of the variable using another token, so the condition will compare the literal text of that value, to the literal text you entered in the "Text" field:
Set integer [count] value to 1
Set Text [variable1] to 'text'
Begin Text Compare : [{TXT:variable{INT:count}}] Equals 'text'
End Condition
In addition, because literal text (which is what tokens become after they're parsed) is not a reference to a variable, checking whether it has been set to a value will not work.
E.G.
Set integer [count] value to 1
Set Text [variable1] to 'text'
Begin Text Compare : [{TXT:variable{INT:count}}] Has Been Set
End Condition
will always return false.
The only way to check whether a variable is likely to have a value when using tokens, it to compare against the literal text "Not set":
Set integer [count] value to 1
Set Text [variable1] to 'text'
Begin Text Compare : [{TXT:variable{INT:count}}] Does Not Equal 'Not set'
End Condition
The limitation to that is that there is no way to know whether it's the variable you're checking that doesn't have a value, or whether it has the literal text value "Not set" (which could happen when you set the value of that variable using tokens).