Every time I make an app I fumble around with these things until eventually I hit the right combination and I can finally, finally deploy the app to my phone or app store.
I think after studying this a bit I have an easy to understand explanation for all this stuff.
A certificate just means that this particular computer is allowed to be working on your apple developer account. First you create a signing certificate thing from your computer (google it). Then you upload that to the Apple site so it has a way of associating that computer with your account.
These are the devices you're going to be testing your apps out on. I guess if you're connecting your phone directly to a computer you dont need to do this anymore but I do it anyway. You just grab your UUID (google it) and then you can register your phone on there and you're good. I think you only really need to do this when you're distributing an app ad hoc or over the air or whatever; but I just do it anyway to be sure.
These are just unique IDs that are used to keep track of your apps on the app store. So let's say you had an app called fart knocker and your business was called poop.. You use this reverse domain notation and your identifier would typically be
com.poop.fart-knocker It can be anything though.. it just has to be unique and thats the common convention used.
Theres this wildcard thing too. Basically if you have a bunch of poop apps that you want to release together you can just set up a wildcard identifier as
com.poop.* and that will cover all your poop apps. The problem with that is you cant use things like in-app purchases or push notifications.
So this is a way of saying this computer is allowed to do this particular thing. So maybe you have one developer (identified by the certificate mentioned above) who is only allowed to test out the app but you dont want him building to the app store etc. You only let this guy download the development provisioning profile. If you're a single developer like me then you just download whatever profiles you need to accomplish whatever you're trying to do (testing or posting to the app store etc). In my case I'm building games (not using xcode) and sometimes the game dev kit cant find the provisioning profile so when I download it I make sure to place it in the
~/Library/MobileDevice/Provisioning Profiles folder manually.
That's it in a nutshell.