Drupal can automatically create nice-looking URL aliases - for instance

example.com/blog/another-useful-post

rather than

example.com/node/1234

You can get the alias URLs in templates by using the built-in drupal_lookup_path() function:

$url = drupal_lookup_path('alias', 'node/' . $node->nid

This will output the alias url (set in the backend) which is much nicer than a node id.

You can also use aliases with the taxonomy module to get a nice-looking url:

$url = drupal_lookup_path('alias', 'taxonomy/term/' . $tid);

For taxonomy terms, you'd use the tid rather than the node's nid variable.

Nicked from daipratt.co.uk (and saved here so I can find it again!)