drop proto tcp and not (dst port 80)
pass proto tcp and dst port 80
Is there a difference between them?
Well, the difference is simple.
Although it may trick you, these aren't even close. Because:
there are several types of traffic on the server, first rule just prohibits it.
in the same time it does not allows HTTP: whether or not HTTP will be allowed is determined by the subsequent rules or chain policy.
second rule, on the other hand, explicitly allows HTTP and doesn't tamper with everything else.
There are rare conditions where you need rules like first, so stick to the second ones unless you are absolutely sure why you need first one.