I never wrote a 2d car game myself, but this is what I would do:
1. If your game will be tile-based, what you can do is define 2 tiles for each tile: One is the displayed bitmap, the other holds information for your collision detection. This can be a simplified version of the displayed bitmap, for example black = road, green = grass, white = building etc. but it can also be just raw data since we don't use it to draw to the screen.
So while you draw the background, you also 'draw' the tiles for collision data (but of course you won't draw them to the screen).
In your game loop, you check in the collision data what the car is driving on (road, grass, building) so how the car should respond.
I hope I'm making any sense here
2. I don't have experience with that, but I suspect AffineTransform will be slow. If it is, you can prerender an array of car images with different angles. Then in your game loop, simply select the correct image for the angle the car is driving in.
You could also consider using openGL, where rotation etc. is hardware accellerated so you won't need to pre-render rotated images.