Traceroute works by sending ICMP (echo request) packets to the destination, with increasing TTL - field values, starting at 1. Each router decreases the TTL - field by 1. This makes the router answer the request with ('TTL exceeded') packets, at which the TTL fields reaches 0.
The '*' simply mean that the hop (router) does not send ICMP (firewall? config?), and therefore your outgoing ICMP - packet does not get answered.
After a certain timeout, "traceroute" increases the TTL on the outgoing packet which makes the next hop in the route answer. This continues until the destination is reached, or the last router in the route replies with 'host unreachable'.