You need to start with assembler, you can't use the other languages effectively without a reasonable knowledge of assembler. Assembler is also free! - which helps as well.
Assembly language translates directly into machine language. Machine language is a string of bits that the processor understands and can execute directly. Machine language is specific to each type of processor - each processor has a different set of commands that it can execute. Assembly is a nice text based way to specify machine language commands. The assembler is a computer program that reads through your assembly file and translates the assembly into binary machine language.
Assembly is the most direct way to program microcontrollers; it tells the microcontroller exactly what to do (what instruction to run and what memory locations to read or write). Higher level languages like C or Basic separate you from specifying each instruction and memory location. High level laguages are 'compiled' into assembly language which is then assembled into binary machine code.