NASA's history site gives a lot of the answers to your questions:
What I'd like to know, is how did they do it? Did they just write away or plan? Were there reviews?
In the Apollo program, as well as other space programs with multiple missions, system software and some subordinate computer programs are only written once, with some modifications to help integrate new software. However, each mission generates new operational requirements for software, necessitating a design that allows for change. Since 1968, when designers first used the term software engineering, consciousness of a software life cycle that includes an extended operational maintenance period has been an integral part of proper software development.
Even during the early 1960s, the cycle of requirements definition, design, coding, testing, and maintenance was followed ...
What did test procedures look like back then? Was there a version control system in place? How was change management handled?
Three boards contributed directly to the control of the Apollo software and hardware development. The Apollo Spacecraft Configuration Control Board monitored and evaluated changes requested in the design and construction of the spacecraft itself, including the guidance and control system, of which the computer was a part. The Procedures Change Control Board, chaired by Chief Astronaut Donald K. Slayton, inspected items that would affect the design of the user interfaces. Most important was the Software Configuration Control Board, established in 1967 in response to continuing problems and chaired for a long period by Christopher Kraft. It controlled the modifications made to the on-board software. All changes in the existing specification had to be routed through this board for resolution. NASA's Stan Mann commented that MIT "could not change a single bit without permission".
NASA also developed a specific set of review points that paralleled the software development cycle. ...
Designers developed the programs using a Honeywell 1800 computer and later an IBM 36O, but never with the actual flight hardware. The development computers generated binary object code and a listing. The tape  containing the object code would be tested and eventually released for core rope manufacture. The listing served as documentation of the code.
For Apollo, MIT developed a special higher order language that translated programs into a series of subroutine linkages, which were interpreted at execution time. This was slower than a comparable assembly language program, but the language required less storage to do the same job. The average instruction required two machine cycle-about 24 milliseconds-to execute.