Have you read the documentation on these features?
Tokens always, without exception, return text. A null value (I.E. no value at all, not a NULL character) is not valid text, so it cannot be the output of a token.
Also, a token does not store a value, as it is not a variable. It returns a value stored elsewhere. Thus, it cannot be set or not set (those operators apply strictly to variables).
In addition, a blank value specifically represents an optional section that was not used, E.G. with a "When I say" value of "my [command;]", speaking "my" would have "{CMDSEGMENT:0}" return "my", "{CMDSEGMENT:1} return "" (blank), and "{CMDSEGMENT:2} (as well as all subsequent segment tokens) return "Not set", to indicate there are no sections remaining (technically if you had a section the literally contained "not set", there would be no native way to distinguish between them, however that should be an edge case).