Let me see if I can help out more.
The iPhone now has EDGE, which is technically 2.5G and maxes out around 4x dial-up speed (about 200kbps). 3G is faster, but it's still nowhere near as fast as you can get from DSL or cable. I think right now you can probably get about 1Mbps (1,000kbps), but AT&T has talked of upgrading it to 20Mbps in the future.
WiFi is only as fast as the connection it's linked to. I would guess most businesses offering free WiFi will get you at least 768kbps. Some probably go up to 1.5Mbps or 3Mbps. But if other people are using it, you won't get the full speed of it. However, it's probably going to be faster than EDGE.
The iPhone switches between them to save network bandwidth (EDGE and 3G are limited much more than landlines) and to speed you up. You can only buy music from the phone via WiFi, and that's probably going to be the same with the App Store. I switch pretty seamlessly between EDGE and WiFi if I have already set up a connection, and sometimes when I haven't. You usually just have to put in a password once if it's a protected/secured network.
The one problem you will run into is sending mail. Some people, like BellSouth/AT&T, don't like you sending your e-mail from off their outgoing server. I basically have to send outgoing mail from that account using EDGE because I'd rather be able to send slower than have to switch crap around when I'm at home. I hope the next firmware allows you to have different server settings based on your connection. Anyway, that's the main complication you should know about.
/end brain dump/