Behind a hardware firewall is best. You are invisible to the internet. If your ports are managed correctly the script kiddies will not ever see your machine/s. If they don't see you then their automated port scans move on to more open systems.
What software firewall does stateful packet inspection? My hardware firewall drops bad packets on the floor. My hardware firewall does not even trust its own internal network. My various windows systems do send out outbound traffic. I don't care because that is part of their function. I don't worry about windows media player checking the streaming characteristics of its media connections. I don't care if my systems want to check for updates. I really don't want to have to view and sign off on every single outbound connection.
I pay more attention to processes and have software that monitors the system processes and prevents any new process from ever getting started without my approval. If nothing can load without my approval then why should I worry about outbound?
In 20 plus years of computing I have never had a virus, trojan, worm, or browser hijack. I don't download files from P2P sites, or shareware. I don't click on untrusted links in emails nor file attachments. I practice safe computing and it simply works...