deadsea - 1:51 pm on Nov 8, 2012 (gmt 0)
I would recommend doing different items on your list differently.
Localization: Use different urls for different languages and locales. Googlebot likes to be able to crawl the content in different languages so that it can send international traffic your way. If you detect the user language and dynamically swap out the content, you'll be missing out on search traffic.
On a similar note, I do very different things for registered, logged in users. They get a much cleaner design and navigation. Users that haven't regestered or logged in yet get quite a few "call-to-action" placements to get them to sign up or log in.
IP address: I've used it before to set the default city for a national service and show local items for sale. There are some IP addresses for which a city cannot be determined and we had a more generic page for these people. We made sure that Googlebot's IP addresses fell into this category. I'm not sure that Google would endorse this approach or see it as cloaking.