I have an iphone 3g running firmware version 2.2.1 that I jail broke with quickpwn a while ago when I first got the phone

I installed many apps such as bite sms (to hide my sms previews) , swirly mms ( to receive and send mms) ibluetooth ( to send files to other people with blue tooth) winterboard (for a custom background) and a few other apps only available to those with a jailbroken iphone.

Since then I believe there is a new firmware available from mac witch is far better than 2.2.1

I have friends with non-jailbroken iphones who are able to send and receive mms, copy and paste, and use mac approved apps that arenít supported by the 2.2.1 firmware.

So, I want to upgrade to the latest firmware (3.0 I think or is it 3.1 now?)

What is the best way to go about this? I assume I should restore the phone threw I tunes then upgrade to the latest firmware then re jailbreak? Or should I not restore and just select to upgrade firmware?

Will I loose my contacts etc or is this backed up by itunes and resynced or restore?

Will I loose all my previous apps from cydia etc?

Should I use quickpwn to do the jailbreak or another application?

Is redsnow, ultrasnow and yellow snow for unlocking the phone to use sims from different service providers? Or are these other jailbreak programs. I am with optus and only use the sim card the phone came with. What about pwnage tool and winpwn? I used quickpwn the first time I jail broke with no problems.

I have both mac and pc with itunes available to use.