- If you are going to pick up a phone to do android development, my recommendation would be a used original Droid or the HTC Desire. And its not because these are good phones but because these are the phones that I see a lot of people using. I have a Nexus One and I find that it is too powerful and does things other android phones can't. (read on)
- Understand what device fragmentation means for your development. Are you creating a form based native application? Different handsets generally handle native layouts, text and buttons very similarly so fragmentation may not be a huge issue. Are you creating a game or an application that uses video/audio? Prepare to be buried in a multi-dimensional matrix of hell :) As an example, take for example streaming raw AAC audio from the internet. Android as a base platform does not support this in hardware or kernel, but some sprint phones do support this.
- Keep in mind the relative power of the different devices. As with most emulators, the Android emulator has slow draw times and fast network times (though network can be adjusted). Just keep in mind that, if you have a device, where does it rank in the spectrum of devices. Developing an android app that runs 'smoothly' on a Nexus One can leave a lot of customers having a 'jerky' experience. Some of this, in my experience, is also cause by poor design decisions.
How hard is it? Doing something trivial is, by design, trivial. A todo list app would take you, with knowledge of any other programming language, less then 8 hours. I find that the expensive part of the process is knowledge of the fringe, as with all things. Things like knowing how button requests cascade, how a view hierarchy should be organized or how to stream media (can you tell I'm hung up?) are the sorts of things that aren't extremely well documented and take more time to understand than similar concepts for web programing (IMO).
Like kreci, I'm open to questions.