Rizy7 described the process for you well, I'll just add a couple of things I like to do...
As stated, the nandroid is made in whatever custom recovery you like to use. Personally, I prefer CWM over TWRP, the reason being that TWRP seems to get updated all the time, and I can't tell you how many threads I've read where someone could not do something (flash a ROM or restore a backup), because TWRP was the wrong version. I've never had that problem with CWM. Either way, they both work. The 2 most critical things to nandroids are 1 - make one of your stock OS before you flash your first ROM, and 2 - always make a fresh nandroid before flashing either a ROM update (to the ROM you're currently running) or before flashing any new ROM. This will keep you from starting post about how everything on your phone is screwed up and you don't know what to do. You can always get into recovery and you can always restore a working nandroid from there. Also, you can,
and should, rename your nandroid backups to something that makes sense to you (like Stock422, AOKP031213, etc...). Although some recoveries may vary, I've found it best to not put any spaces or special characters in your renamed backup. Some recoveries wont recognize the file if you have a space in the name. If they start to take up too much space on your phone (they get put in directories relevant to the name of the recovery program), just copy them your PC. The best guide/tutorial I'ev ever read on flashing ROMs and making backups is here :
http://forums.androidcentral.com/ve...backup-restore-install-roms-galaxy-nexus.html It's for the Galaxy Nexus, but the steps work on any Android phone. I found the first time pretty scary, but it's really simple. Follow all the steps in the correct order and it works out perfectly. Also, buy the paid version of Titanium Backup and it will keep all your data from apps you've downloaded and used (everything from to Angry Birds to Zedge), so you can restore data after you wipe the phone in recovery. Just don't ever restore system app data (like for Gmail, Maps, etc...).
One other thing I recommend is getting a custom launcher, like Nova (or others). Now, when you back up the phone with Titanium, it will back up that custom launcher and after you restore data to that launcher, all your home screens come back up just like they were, so you don't have to manually set your phone up after every ROM flashing. I like Nova because it's smooth and very much like the stock launcher, but others work well too.
So here's the process in a nutshell (
the order of everything here is very important):
Launch Titanium, back up all apps with data
Download new ROM and its referenced Gapps files
Flash into recovery and make a nandroid of your current ROM (even if your only doing a ROM upgrade)
While in recovery (
do all of this in the order shown), wipe data, wipe cache, wipe Dalvic (none of that wipes your sd card stuff), flash ROM, flash Gapps, reboot phone (from recovery menu)
After booting up, sign into gmail account
Go to the market and re-download Titanium
Launch Titanium and restore all apps without data
Still in Titanium, restore app data only to non system apps (these are the app that you have decided to download...not apps that the phone comes with)
Reboot (for good measure) and you're good to go.