My advice is to use both.
A hardware firewall can have different 'strengths' or levels of protection, but it is broadly true to say that they are only interested in whether a PC has permission to communicate or not.
By contrast, a software firewall is concerned with whether a program has permission or not.
It is perfectly possible for a program / virus / trojan on a PC behind a hardware firewall to initiate an unwanted line of communication. Most hardware firewalls will simply recognise that the 'internal' PC initiated the communication, and therefore will allow the 'external' PC permission.
The two types of firewall just operate at different levels - use both for the best all-round protection.