I am unable to find a clear explanation in the Apple docs on what the difference is between a development and distribution provisioning. I
I think the development profile lets you run the app in the debugger, while the ad hoc profile does not. (That's what I've observed anyway, assuming it is supposed to behave that way.)
A development profile is used for testing your app when in the development stage.
Distribution profiles are of two types
Adhoc testing is when you have completed development and want to distribute your app to multiple users for testing (your second question). Just create a distribution profile for adhoc testing and select all the device ids for which the profile is valid. In that case you will only need to send the .app file and .mobileprovision file to each user testing your app.
For submission of the app to app store, you will have to create a distribution mobileprovision file with the "App Store" option selected.