A bit of more detail: First off, there's the SDK you can download for free. As long as you've got an Intel-based Mac, you can do a lot of your programming on that. Note, you will NOT be able to test on an actual iPhone; instead, the free SDK comes with an iPhone simulator than runs on the Mac. The simulator is pretty darn good by now, but it doesn't support certain types of sound effects (Open AL), doesn't simulate the accelerometer at all, and it isn't anywhere near the same speed as the actual hardware (so where your program may run at a good speed on the simulator, actual hardware it could get a lot of slowdown and bad loading times). I'd definitely recommend working with the free SDK first before paying the $99, as long as your app doesn't depend on something it doesn't support yet.
So, then there's the $99 program. This gets you three things: the ability to test your app on actual hardware, the ability to publish as many apps as you want to the App Store, either free or for cost, and the ability to write your app for beta versions of the iPhone OS. It also gets you two programmer-support cases with Apple, so if you really just can't figure something out, you can email Apple and they'll try and help you.
The more expensive program you can ignore, that's for a company that wants to develop apps that can be used by anyone at that company, rather than released to the App store.