Big picture, ATC is all about injecting predictability into the operation of lots of independent aircraft. Combing the unruly herd into nice smooth lines dovetailing neatly into whatever choke points there may be. So in terms of overall doctrine, pilots have a great deal of flexibility to do as needed, but generally follow the herd unless there’s a reason not to. Reasons not to vary from “I will not fly into that thunderstorm on our planned route” to “If I cut this corner & fly the hypotenuse I save $200 of my employer’s fuel & arrive 2 minutes earlier.”
It’s sorta like driving through a big parking lot. When it’s busy & many cars are parked there, you really must follow all the painted lanes & signs unless you want to have a collision. At 3 am when the place is empty, you’re able to drive diagonally across the lot at 50mph with no concerns.
For airliner ops we’re always dealing with ATC & complying with their efforts to comb the herd. But unlike, say, dealing with a traffic cop, ATC’s goal is to let all pilots do whatever they want, as long as it’s consistent with the big plan. So if I want to drive diagonally across the parking lot at 70 mph I ask for that. And here’s the key difference: they’re obligated to say “yes”, *unless *that would interfere with somebody else doing something more orthodox.
At 9pm over Texas the answer is almost always “yes”. At 5pm over NYC the answer will always be “no”. So we don’t bother asking in that situation. But a good pilot is always “working the system”, trying to enhance safety or economy by gently pushing ATC for whatever amendments will improve their situation. Knowing when, where, and how hard to push or not is one of the key judgement areas.
Altitude: Folks upthread have addressed altitudes pretty thoroughly. To summarize: When operating under ATC control and in level flight, you own the round-thousand-foot altitude you’re assigned & crossing or opposite direction traffic can pass 1000 ft directly above or below you. Between tolerances in altimeters & tolerances in tracking the altimeter, it’s possible for the actual separation to become less than that. The intent is to operate exactly on altitude; being 40 feet off is sloppy & being 100 ft off is beginning to become unacceptably unsafe. Alarms typically sound at 250 ft off altitude.
At low altitude where non-ATC controlled aircraft can also be found, they slip in between the plies of ATC-controlled aircraft. So the non-ATC controlled aircraft might be at 7500 feet while jets are going by at 7000 & 8000. You’d try to avoid stacking 3 airplanes over exactly the same spot at exactly the same time. But it can & has happened.
While climbing and descending the steepness & hence the point at which you arrive at the new altitude is pretty much totally up to the pilot. As a practical matter, there’s a most-efficient way to fly any climb or descent and most pilots operate to maximize efficiency. And most aircraft of a similar type (e.g. most jetliners) have similar-enough performance that each airplane more or less does a particular climb or descent the same way. Where necessary, ATC will publish pre-planned routes which have both a horizontal path & vertical wickets to fit through. When operating on one of those routes the pilot must fit through each wicket. If weather or some other factor makes compliance impractical the pilot & controller negotiate a deviation. Unless traffic is extremely dense this is no big deal.
It’s most efficient for jets to cruise at a slowly increasing altitude as fuel is burned & the aircraft gets lighter. When traffic is light we can get a “block” of multiple altitudes from ATC & very slowly ascend from the bottom to the top of the block. It may take a couple hours to climb through a block and during that time the entire range of altitudes is ours to use as we see fit. This is most often done on coast-to-coast or oceanic flying.
Speed: As stated by others above, most of the world, including the US, mandates a max speed of 250 knots below 10,000. In a jet we generally go as fast as we can until / unless we have to slow down. And 250 is definitely slower than we’d ideally want to go. So while you’re free to climb out or descend at a lower speed, folks just don’t.
Enroute … Our flight plan has told ATC what speed to expect. Which was decided upon by the flight planning software at our HQ based on aircraft type, schedule, winds, weights, etc. We’re free to change that at any time, but are to advise ATC if it varies more than 5%. We often speed up if late or slow down if early, shy on fuel, or encountering turbulence. As a practical matter we can’t speed up much more than 10-15% before we hit the aircraft’s max speed. We usually can slow as much as 20%. Slowing 20% increases our endurance and would be used if going to someplace that’s backed up with holding due to weather or whatever. Slowing much more than that actually increases fuel burn & is not used.
For arrivals and to a lesser degree departures from busy airports ATC will often assign specific speeds to several airplanes to adjust spacing through a wicket. The expectation is everybody will comply with speeds plus/minus 5 knots or advise ATC if unable.
This often leads to silly / frustrating exercises where they ask us to stomp on it for 5 minutes & then slam on the brakes & go slow. The whole goal was to move us forward a bit in the more-or-less stable gap between the guy ahead & the guy behind.
When there’s not enough time/space between here & a wicket to achieve the needed spacing using just speed adjustments, they’ll tell somebody to zig-zag a bit to move backwards compared to the rest of the herd.
Routing / horizontal navigation. You’re expected to stay as close to on your track as possible / practical. With older navigation systems, “on course” while in cruise might be left or right of course by 5 miles. With modern GPS-based stuff, enroute “on course” is defined as +/- 2 miles. So while you’re free to wander back & forth a couple miles, it’s not professional; Typical errors are a hundred feet left/right or less.
In the departure & arrival phases, the definition of “on course” goes down to +/- 1 mile. And during approach to a runway, it shrinks from 1500’ left/right at 5 miles to just a handful of feet as we near touchdown.
Bottom bottom line: “Measure it with a micrometer, mark it with a lumber crayon, and cut it with an axe” is an oft-repeated saying in the business for a reason.
We make a strategic plan before takeoff down to the gnat’s ass, then fly what we & ATC need to best get the job done under the conditions of the moment. Both we & ATC are continuously adjusting the tactical plan to optimize the operation from our respective (and often conflicting) perspectives. But at any given time the goal is to comply with the tactical plan-of-the-moment as closely as possible. Which is a generally plus/minus 20 feet vertically, a hundred feet horizontally, and 5-ish mph.
Which is sorta like saying if you imagined a ghost aircraft just touching above, below, and at each side of us, we remain within the envelope of the surrounding planes. I.e. within one “car length” of where we’re expected to be in all 3 dimensions. I need the other pilots around me to be where they’re expected to be, lest we scrape paint. So I in turn have to adhere to the same standards for their benefit.
Right now precision in the 4th dimension, time or equivelently along-track position, is much lower than the other 3 dimensions. It ranges from plus / minus 20 or more miles enroute down to plus / minus 1/2 mile or so at landing. One of the big goals of increased ATC & aircraft automation over the next 20 years is to compress this precision a bunch & thereby cram a lot more jets into a lot less space.
I have my doubts. Absent weather, mistakes, malfunctions, and emergencies it’d work great. We’ve come a long way on the latter three over the years. Weather control has thus far eluded us. And when one of the latter 3 does happen, the error bars suddenly go from a handful of feet to thousands of feet or even miles. There better be empty space over there, not some guy 300 ft. away in the next “lane”.