ATC 101
##ATC 101 Let'sLet's start by clarifying one common misconception. There is not "one ATC unit" there are several: When a plane is close to a controlled airport, it's controlled by tower. After takeoff, by approach/departure; during cruise by en-route control ("Centers" in the US, "ACCs" in Europe and I don't know for the rest of the world) and during landing it's again approach/departure, and then tower again. For more information you can have a look at this answer which explains these concepts in depth.
Altitude
Valid altitudes
##Altitude
###Valid altitudes
abelenky in their answer mentions the "even-odd rule" for altitude assignment which is correct. But if want to go deeper, this is not entirely true: above FL410 ("41000" feet) flight levels are every 2000 feet. So 410 is the "odd" and 430 is the "even" (ie the westbound). And that was after RVSM. Before RVSM, flight levels were every 2000 feet from FL290 up to FL410. and every 4000 feet above FL410. Again the "even and odd" was redefined. More information on RVSM on this answer.
Altitude assignment
###Altitude assignment UsuallyUsually when a flight receives a departure clearance, it is assigned a runway, a SID and an altitude. This altitude might be dictated by many factors like the SID itself, the terrain around the airfield and the traffic around the airfield at the time of takeoff. For the last case, the controller's judgement call is required.
Climbing
###Climbing
WhenWhen the aircraft is in the ACC's control, the controller will again try to direct the aircraft to its final requested level. Usually, upon first contact of a departing flight the controller will ask foobar flight say final requested level
and the pilot will report it back. The requested flight level (RFL) is included in the flight plan, but for some reason that I've never asked why they ask the pilot when they get them on frequency.
Descending
###Descending AfterAfter that and until the top of descent there is no significant change in altitude. At the top of descent the pilot will request a descent and the controller will grant it whenever it's safe and possible. And then the reverse process starts: get the flight at the predefined altitude for handover with the approach, and then the approach will try to descend the flight to the appropriate altitude for engaging the ILS or other instrument approach procedure.
Heading
Departure
##Heading ###Departure BeforeBefore departure a flight is assigned an SID and they are supposed to follow it, unless they receive an instruction from the controller to deviate. When discussing with air traffic controllers in LGTS, they told me that the majority of the flights are assigned a "direct" to the TMA boundary. They assign a heading only if there is traffic in the vicinity and want to steer the departing flight away of it.
Arrival
###Arrival DuringDuring arrival as it is correctly mentioned by fooot's answer a flight is (usually) assigned a STAR, which they follow in order to engage the IAP that will get them safely to the runway. In airports with RADAR service though, the approach controllers are vectoring the flight in order to create a stream of aircraft, a queue for landing. In order to keep this post short (too late I'm afraid) and because I don't want to repeat myself, I invite you to read my answer on the topic here. Then you can see if you still have blurred areas and you can post a new and more specific question.
En-route
###En-route DuringDuring en-route control the flights fly on airways. The routes they follow though are not always great circle arcs. So very often the pilots are tempted to request a direct to point to save some miles, and along with that fuel, emissions and time (so everybody is happy). The controller again might or might not grant the direct depending on the situation.
Separation
##Separation AllAll the above make the profession of the air traffic controller sound very easy: just a cool and relaxed guy giving predefined altitudes and headings. Nice... But that's far from the reality. Many times things don't go as planed and flights on the same altitude converge and the controller has to take actions. They have to evaluate each case and decide which technique they will follow to resolve the conflict: altitude change or vectoring?(2)