of course the best way is to have diferent versions for both, sources and resources like images, but I would stick to 3 images sizes (small, medium, big screen). Creating the resources for each screen size is insane, lot of work to do.
Totally agree with Overkill, don't use 'magic numbers', have all numerical values depending on the value of others.
Alsoo, I've played to a game called Atomic Skater which seems to implement a image scaling engine. It seems they (Plutonium software) use the same images for all screen sizes and scale them down or up. Of course, when you scale the images to a bigger resolurion they loss definition, but in this game there're no pixelation, just some kind of linear interpolation and the edges are soft. The result is a game filling all the screen but it takes like 2-3 minutes to load the game (At least in my slow v3 razr)...