Have you ever used an application level firewall like Little Snitch? I have tried using it a couple of years back, and gave up after less than an hour.
In principle it's nice to be able to manually allow / reject individual requests, but in practice you can't get anything done if you do. Popups keep popping up all the time, and it's rarely clear what the request is good for. Then you get random failures, because you accidentally blocked an important request, or you just allow anything anyway, because there really is no way to know if that request is good or bad.
And that's from the perspective of a software developer who understands what protocols and ports and addresses are.
A firewall like that would be absolutely useless for non-technical users.