In general, Google does not index anything in a URL after a #. Google generally sees this as an indicator that it is an anchor to an area on a page (or content that should not be indexed), and not a new URL. Webmasters have used this trick for a long time in SEO, using this # in a URL for various reasons.
There is one small way around this, when you are setting up an Ajax optimization you place a ! after the hashtag. This tells Google to crawl a new URL that is established by a set of rules Google has created for Ajax sites. You can learn more about that here. Also, here is a small excerpt on that point.
Hash fragments that represent unique page states must begin with an exclamation mark. For example, if your AJAX app contains a URL like this:
www.example.com/ajax.html#mystate
it should now become this:
www.example.com/ajax.html#!mystate
When your site adopts the scheme, your site will be considered “AJAX crawlable.” This means that the crawler will see the content of your app if your site supplies HTML snapshots.
Google Indexes # in Mobile Results
This week I noticed that Google has indexed a URL with a # in mobile results. Google has been working hard to crawl more Javascript, Ajax and CSS, perhaps the rules regarding # will be changing. Generally, this is really not the best way to deal with situations anyway. It would be much better to have clean URLs, 301 redirects or rel canonical in place opposed to using a # to deal with duplicate content issues. However, # are still used frequently for anchors so Google will need a way to determine that.
One thing to note, Google has in the past tested linking occasionally in search results to a page with a # in the URL as a jump to. So we may be seeing more of this. But in the example below, this is just the home page and looks to be a duplicate content issues. Looks like a Google error overall.
Here we see the example URL that was ranking with a # in Google mobile search results below.