The main problem with your pattern is that .+\t acts greedily, i.e. it tries to match as much of each line as possible while still enabling a match to the rest of the pattern. That is, the first .+\t may actually already span several columns.
In your previous pattern with ANN=, you prevent this by anchoring the match at that string (provided that ANN= occurs only once per line in the INFO column). In your current pattern, however, the [.]+\t is too ambiguous since you may have other columns after ALT ending in a . (my guess would be the FILTER column).
This is why my revised suggestion defines a column explicitly as at least one character, which is not a TAB and which is followed by a TAB. The complete pattern then requires four such columns followed by a character that is not a . (or, alternatively, a # as the first character on the line) followed by additional characters.
If you prefer, you could also use the following NOT Matching pattern, which is slightly shorter: ^([^\t]+\t){4}\. and simply says: skip all lines that are starting with four tab-separated columns and a . at the start of the 5th.
In general, you can test your patterns locally in a Linux terminal with:
grep -P 'your_pattern_in_single_quotes' input_file # for a Matching pattern
grep -vP 'your_pattern_in_single_quotes' input_file # for a NOT Matching pattern
Similarly use grep -cP or grep -cvP if you just want to count the number of lines you’d keep.
Cheers,
Wolfgang