1) Bitcoin still counts the number of zeros.
2) The problem is to find the has that is less than or equal to target value
3) Statement 1) and 2) are actually the same
They are not the same.
Let's say the target is 0100.
I find a block with hash 0101.
My block hash is higher than the target, but has the same number of zeroes.
If you are looking for a number which is less than or equal to that target, my block is invalid.
If you are counting the zeroes, my block is valid.
Using Method 1.
Using Method 2.
Your two methods just perform the same calculation in different ways. Both count the zeroes first and then remove the zeroes from the 64 hex characters, and then use the remaining 45 characters to work out the number of possibilities.