For Twitter, SMS and other ~140 character message systems, the hash tag (aka the pound or number sign) provides a simple metadata or tag for each message.
Hash tags are simply a way to include a short name of the subject of a Twitter message (or similar short micro-blogging posting). An example of a tweet (Twitter message) that includes a hash tag is:
I am watching Lessig give a powerful performance #pdf2008
The hash tag in the example is "#pdf2008". Someone could do a search of twitter for all of the "tweets" that include this hash tag ( http://search.twitter.com/search?q=%23pdf2008 ). Normally Twitter is set up to just show a member of Twitter, the tweets of other members one has chosen to follow. However, by searching one could follow a conversation stitched together solely by the use of the search for a hash tag.
Hash tags have no real structure as long as it fits within the Twitter message specifications. Even the hash tag character is only a convention, although its use indicates the intention to make the "tweet" better categorized and searchable. And there is no formal system of registration required or even offered within the Twitter site. It is solely up to various Twitter members to create and consistently use the same hash tag to allow for these conversations.
As a metadata standard, hash tags are very open and as obvious and as human readable as possible. In that there is no system of control or creating hash tags, it is possible to have duplicative or overlapping hash tags, although the search system in Twitter will search for a list of characters that ends with a space character (e.g. a search for #pdf will not bring back "tweets" with #pdf2008).
Hashtags.org is a site that provides a semi-registration and reporting of hashtags.