The problem is that only a very small number of iPhones/iPod Touches are Jailbroken, and you have to deal with purchasing/registration yourself if you're a developer.
Maybe, someone who is an actual iPhone developer, can explain the process in more detail.
1) Debugging your own app (works only on your own phone)
2) Distribution : http://imgur.com/PFYnK.png
i) Ad-hoc, limited to 100 devices: http://imgur.com/HjwnN.png
ii) For the app store
So yeah, you can compile it for 100 friends if you have their iPhone/iPod UUID, but you can't make it freely available for everyone.
On the other hand... there's no easy way to charge. The provisioning profile is all that's needed to run the app.
Also, these profiles are intended for "internal distribution" (inside a company). I'm sure Apple will blow up your certificate if you try public distribution.