You have 2 routes, inplace or side by side.
Safest is side by side.
2 ways of side by side,
1. a new box with a new install of sql, restore the database copy all server wide objects etc and change our connection strings then test
2. install a named instance on the same box, then restore, change connection strings and test.
Its the safest way as you have your old server running at the same time so if any issues arrise you can fail back without impacting anything.
In place is a bit tricky as you literally upgrade the existing installation, so if anything should happen you need to uninstall 2012 install 2005 restore everything
Before you do anything always take a full backup of all databases including your system databases, script out all logins, jobs, ssis packages, linked server etc etc and store them on a network location somwhere for safe keeping.
I have attached a white paper on a 2012 upgrade.