In Windows 2008 I see inbound and outbound rules, I can open TCP and UDP in both directions. So if I open some port in TCP and some in UDP inbound and the connection works, why do I need outbound rules?
Outbound rules define which connections your server can open to other network hosts, meaning that the server itself initiates the connection.
An example: on your server runs an IIS/ASP.NET application that has to connect to a SQL Server machine. You'll have to allow the ports necessary to connect to that server.
Outbound rules can be useful to prevent data exfiltration. If a hacker does get into your system, under a non-administrative account AND you have outbound rules blocking ports, you might be able to prevent him from stealing your data. In theory, outbound rules would prevent him from connecting back to his server. Some hardware firewalls (cisco, fortinet, juniper, etc.) have this capability which is usually called Data Leak Prevention.