Only /foo/ alone is short for $0 ~ /foo/.
In ... ~ /.../ or match(/.../, ...)..., it's only some form of quoting operator for regexps, while in other contexts, it's more an operator that resolves to a number (0 or 1).
That double meaning can be a bit confusing. There are a lot of those double meanings / ambiguities in awk.
/foo/ expands to 1 or 0 depending on whether $0 matches the foo regexp or not but "1" ~ /foo/ is not "1" ~ "1" when $0 happens to match foo, here /foo/ is no longer short for ($0 ~ /foo/). In the case of "1" ~ (/foo/) or "1" ~ +/foo/, you'll see the behaviour varies between implementations though.
var is only var.
var as a condition means true if the variable is numeric or a numeric string and resolves to a number other than zero or if it's a string and resolves to a non-empty string.
variables declared with -v var=value are of those that may considered numeric strings if they look like numbers and strings otherwise.
awk -v var=in 'var {print "x"}'
prints x for every record because in doesn't look like a number and is not the empty string.
awk -v var=0 'var {print "x"}'
Would not print x, while:
awk 'BEGIN{var = "0"}; var {print "x"}'
would print x for every record as var was explicitly declared as a string variable. So even though it looks like a number, it's not considered as such.
That's another one of those double meanings. A variable may be considered as numerical or string depending on context. See also > that depending on context is taken as a comparison operator or a redirection operator (which again several ambiguous situations where the behaviour varies between implementations).
Note that you can also do things like:
awk '{print /foo/ + /bar/}'
Which is the same as:
awk '{print ($0 ~ /foo/) + ($0 ~ /bar/)}'
But if using concatenation instead of +
awk '{print /foo/ /bar/}'
that doesn't work as there's again an ambiguity between the /RE/ operator and the / division operator. When in doubt, use parens:
awk '{print (/foo/) (/bar/)}'
By the way, you should avoid using -v to store regexps or anything that may contain backslashes, as ANSI escape sequences are expanded in them (with GNU awk 4.2 or above, values that start with @/ and end in / are also a problem). Instead, you should use environment variables:
RE='\.txt$' awk '$0 ~ ENVIRON["RE"] {...}'
for instance.
/pattern/with a variablepat.