Here's how mIRC would go through your examples.
First example:
The line is read from the file
The line is parsed from the first space character to the end of the line
The parsed information is compared and the $ifmatch identifier is set/unset
the contents of $ifmatch are returned
This is faster, than echoing $gettok($read(%file,%line)),2-,32) because mIRC doesn't have to go through those first two steps a second time for the information to be displayed.
2nd example:
The variable is set
check the variable, if there is information then echo the variable
Re-writing your first code and going with the least amount of processing time, probably would get you
echo -a $iif($gettok($read(%file,%line),2,32) == asd,$v2)
$v2 will return asd if there's a match, but it's faster than using $ifmatch (which has basically been replaced with $v1) since the setting of $v2 does not require mIRC to read and then parse the line before setting the identifier