Profiles are what is used to build forms such as contribution pages, membership sign-ups, registration for your site, and more. They can be set up as standalone pages (create a profile page and then grab the standalone form code and put into a page) or can be used as part of one of CiviCRM's components, such as CiviContribute.
When it's part of one of the components, you add the profile as part of the set up of that page. It gives you the option to add up to two profiles to the page. I'd rather you have the option for more, but that is all it gives you.
When it's added as a standalone page, you first create the profile. Go to Administer >> Customize >> CiviCRM Profile
There you can create a new profile or add to one that is already there. There is a good amount of information on profiles here. There is also information on profiles here.
You can add fields that are standard to a profile as well as those you create yourself. It's pretty easy to do - just pick what kind of contact the field is assigned to (is it something like "first name" that would only be for an individual or an address which would be for all "contacts", for instance), choose your options - such as whether it is required - and then submit the page.
Once your profile is done, you can grab the html code to paste into a Drupal page. Just click on "more" to the right of the profile's name on the profile listing page. Then choose "html form snippet". This will give you all the html code you need to add this to a page. Please note: If you are using these snippets and then change the form, it can break the code you are using elsewhere since it does not automatically update your custom page.
You can change the label for a field in your profile without affecting the field's name anywhere else. Just edit it inside the profile. This can be handy if you need something more descriptive for the public but want the shorter name to be used within admin areas, such as a person's record. Changing it there is not universal - it only affects that profile.