That's a really big question so let's break it up a bit.
What can I do in advance?
Start with some required reading.
These links have links to further information such as
- Deprecated SQL Server Features
- Discontinued SQL Server Features
- Breaking Changes
- Behavior Changes to SQL Server Features
Read each of them to see what major stuff is changing. Pay particular attention to features you are using.
In addition you should use the Upgrade Advisor. It checks for installed components and identifies those you will need to fix either before or after the install.
In-Place vs Side-by-side
Lots of pro's and con's here on both sides.
- MUCH easier. All of your configurations stay the same for example. Also the connection strings for your applications probably won't need to be changed.
- Cheaper. No second set of hardware required.
- Backout is difficult to impossible. If something goes wrong you are going to have to power through and finish because backout involves creating a whole new server and reinstalling SQL then restoring backups of your tables.
Basically the pros & cons are the opposite of In place.
- Safer - If something goes wrong you kill the new version and just continue on with the old one. Then you can try again later.
- It's more expensive because you have to create a new set of instances probably on new servers.
- It's more difficult because you have to change connection strings, make sure all of your configurations are the same, etc.
Now you can mitigate the expense of the side-by-side by creating a new instance on the same server, moving everything to it, then uninstalling the old instance. It works and depending on your situation might be the best idea.
Honestly the move from 2005 - 2008 R2 isn't that bad. It's nothing compared to 2000 - 2005 or 2008 R2 - 2012 (mostly SSIS changes). I'd say with careful planning and reading you should be in good shape.