1. It can not detect if "explorer.exe" is really "explorer.exe" when asking you if explorer.exe may access the internet.-Tuxman
By that logic the high-end firewalls by such companies as Cisco, Juniper, and SonicWall are not firewalls, either as they cannot determine the difference between explorer.exe and another program, either. A firewall's job is to restrict what kinds of traffic come across which ports. If you are going to want to control things at the application level then you are talking about something else. Yes, some advanced personal firewall software offers this additional functionality, but it's not core firewall programming.
2. It is not that hard to write a script which automatically clicks "Allow".
It
is that hard to write one if you have your UAC set where it's supposed to be. Follow the advice to turn off UAC because some knob on the internet told you to then you get what you deserve.
3. It is behind your internet connection, so any packets passing it are already on your computer.
Sandboxes, virtual machines, etc. make this point moot.
4. ... if they pass it anyway (there is always a way to create your own, independent TCP connections).
And none of these ways can circumvent the low-level hooks for firewall functionality in Windows 7. The old days of the Windows XP RTM firewall are behind us.
5. A virus, worm or trojan runs with your own user privileges, so it can easily disable your PFW completely.
Not if you have UAC turned on.
If you actually use software from dubious sources and click unknown links (the only ways to get infected), you'll fail anyway. A "personal firewall" can not help you.
People don't have to use dubious software these days to be vulnerable. It's possible to get attacked just by visiting regular web sites. It's a dangerous world out there & the only sane defense is one of multiple layers that can catch almost all, if not all, attack vectors present on the internet.