The Arduino programming environment
You can download the Arduino programming environment, or 'IDE' (Integrated Development Environment), from Arduino.cc here. There is already a good description of its features on the Arduino.cc website here, so I won't start repeating that. Suffice to say, it is the window to communicating with your Arduino. You can programme your Arduino with it, access examples, download additional libraries to make your life easier and programme all sorts of different Arduino enabled hardware. You can also see what your Arduino is up to with the 'serial monitor' when you print to it in your code, very useful for debugging. Funnily enough, I have just noticed the new 'Web Editor' for writing code and uploading from your browser which looks like a great addition so I will get playing with that (requires a plug-in). The Arduino can also be programmed from other IDEs and when you have moved on a bit you may want to follow up on a different environment for extra debugging features, ease of programming etc.
The examples included with the environment are a really crucial resource and will get you started on your projects and remind you of that formatting that you just forgot again. The job of a programmer is often cutting and pasting bits of code and glueing them together with a bit of your own code. These snippets often come from examples that are fleshed out and adapted to your needs. The Arduino website is also key here, there are some great tutorial resources and the 'Playground' is basically a giant Wiki of everything Arduino, especially useful are the sections about interfacing with different types of hardware and software.
A key resource, that is worthy of its own paragraph, is the 'Reference', it is like the instruction manual for your Arduino code. It lists the control structures, types of data and functions that are available to you and gives a bit of information and a little simple example of how to make use of them. For example, if I want to understand the correct format for an 'if' statement I go here, if I want to create a random number I go here, if I want to scale one range of numbers to another I go here, etc etc. If you are making use of additional libraries, for example you want to control a servo motor so you make use of the 'servo library' in which there are already a nice set of functions that you can use, then that will have its own reference and indeed examples too.
One last thing to mention is the forum. If you are stuck on something, search the forum. Whatever you are trying to do, someone has already probably done something similar. You will find endless tips, tricks, circuits and snippets of code here, it is a great resource. If you feel you can not find an answer to your question you might post on the forum for some help. As with any forum you need to read the forum guidelines first, post a clear question with an isolated example of what you have already tried and where it is failing, you will be expected to have done your homework, followed the tutorials and searched the forum first! The Arduino forum can be a little spiky, they will have little patience for those who are being lazy and just want someone to do their project for them, you have been warned!
Oh, and another thing, use the web! There are an incredible amount of Arduino tutorials, guides, projects to follow and other forums offering help. Arduino is essentially the C++ programming language so you may find C++ resources are also of help.
Lets move on to some workshops.