The current ABNF defines * as a special value which only invokes the semantics when it's the entire field value; otherwise, it becomes a field name (since it's valid according to the field-name ABNF) and effectively gets ignored (since it's not going to be in normal requests).
An alternative way of looking at it is to say that it's a special field name that, when it occurs anywhere in the Vary field value, it effectively turns off caching, no matter what the rest of the field value contains.
Waiting for data to see what implementations do. Either way, this needs some examples in the spec, since it's so special.
It looks like all browser engines will turn off caching if * appears as any member, as does Squid. ATS and httpd only cache in the specific case where there's a blank Vary field line and then one containing *. Varnish appears to be the only cache tested that will treat * like a field name if there's any other content in Vary; nginx is all over the map, and Fastly doesn't seem to know about *.