To add to lioryte's informative post...
Be sure to save all your ringtones to the \My Storage\My Documents folder (don't put them in any subfolders). Windows will be able to see them there and that way you won't lose them after a hard reset/flash. Then, if you back up your information with a utility lke
PIM Backup, once you restore the PIM data after a flash, all of your contacts will be restored with their individual ringtones assigned and the ringtones will already be there (since they didn't get blown away with the flash)
As a further note to those out there using SPB Mobile Shell, before flashing, go into SPB settings and do a backup, then once you hard reset/flash, and after you restore your PIM data, go back into SPB settings as restore the backup you saved earlier. Doing so will restore your contact settings and ringtones, and will put the contact page you created back to the way you had it before