A hub is a device that connects PCs together. In general, what is called a hub in todays market is a "dumb" device. In a hub, when one PC sends data onto the wire, the hub simply forwards the packets to all the other devices connected to it. Each device is responsible for determining which packets are destined for it and ignoring the others. Current "hubs" typically share bandwidth between all the ports. In the days of coaxial networking, hubs were often called "bridges". Because they forward every packet that they receive, they do nothing to streamline the traffic on your local network.
A switch is a little smarter than a hub, in that it records the IP and MAC addresses in a table of all the devices connected to it. Thus, when a packet is put onto the wire by one device, the switch reads the destination address information to determine if the destination device is connected to it. If it is, the switch forwards the packet ONLY to the destination device, sparing the other devices connected to it from having to read and deal with the traffic (making your network more efficient). If the switch does not recognize the destination device, then the switch sends the packet to everything connected to it, thereby requiring the devices to decide for themselves whether or not the packet is for them. In general, switches provide each device connected to them with dedicated bandwidth.
A router is the "smartest" device of them all. A router records the address information of everything connected to it like a switch. But it also records the address of the next closest router in the network. (You can program this as the "default gateway.") A router reads even more of the information in the address of a packet and makes an intelligent decision about what to do with the data based on the address. For example, if a router receives an outbound packet that has a destination address that is not in it's table, it forwards the packet to the default gateway, rather than every device attached like a switch does. This is how data moves onto, and through, the Internet. Routers are also capable of looking at the source address of a data packet and making decisions based on that as well. This means they can tell the difference between traffic that originates on your network and traffic that comes from outside. Switches and hubs can't do that (at least in a home user's price range). This means that if a router receives an inbound packet that is addressed to something not attached to it, it simply drops it and your local network doesn't have to deal with it. A switch would forward it to all your networked devices and force them to decide whether or not is should be read. This can clog up your local network with useless traffic.
This is also the fundamental difference between the devices and why the router is better for your application. Let's look at security for a minute. Say I'm a hacker and I get the IP of one of your computers somehow. So I send data to you. A switch will look at the destination address, recognize it, and send the packet right on to your computer. A router on the other hand, can be programmed to look at the source address as well. You could set a rule that says if a packet originates from outside your local network, do not forward it no matter what (although this would be stupid because you would never get any data -- but it could be done). Thus, a router can protect you from attacks in ways that no hub/switch ever could.
This is a pretty simple view of the differences. Remember the names are not fixed in stone. There are so-called "intelligent hubs" that act as switches, and "Layer 3" switches that can do things like a router.
*This FAQ is based on user knowledge from a volunteer core of BroadbandReports' members. This FAQ in no way constitutes official information from Comcast or any of its affiliates.