The chance for mission failure was quite high, but they managed to make it work despite that.
For instance, the crew left the tunnel between the LM and the CM pressurized, so when the spacecraft separated, the LM had a bit more velocity than planned. That led to it landing at the extreme downrange limit of the planned landing zone. The landing zone was full of large rocks, and the LM had to hover and transverse to find a good place to set down. At touchdown, the LM had probably less than 15 seconds of fuel remaining. So they were very close to having to do a “fire in the hole” abort (firing the ascent stage while still attached to the descent stage), at low altitude, and depending on the attitude of the spacecraft, might not have worked.
Plus, there were numerous 1201 and 1202 program alarms (you can hear them in the audio). Those were indications that the computer was overloaded. Fortunately, it was a smart computer, and ignored some processes. The landing radar was on, and giving input to the computer before it needed it. The computer continued to function, and gave good landing data. But, if it had really got overloaded, it would have shut down, and if that happened at a critical phase of the landing, it could have been catastrophic.
Also, in simulations just prior to the landing, the simulation supervisor gave the mission control folk a bunch of really tough errors, multiple failures plus 1201 error codes. MC made the decision to abort based on the 1201 errors, and were informed at the end of the simulation that that was not the correct decision. So it was a good thing they did those simulations, because if they hadn’t, Apollo 11 would have aborted the landing.
In Apollo 12, the spacecraft was hit by lightning on takeoff, and it played havoc with the on-board systems. Fortunately, the Saturn V continued to work reliably, and in orbit the crew reset all the instrumentation and proceeded with the mission. However, there was a fear that the lightning had set off the pyrotechnics for the parachutes. There was no way to check, and if they pyros had gone off during launch the chutes wouldn’t have opened at landing and the spacecraft would really have made a splashdown.
In Apollo 14, there were two problems with the LM , the biggest of which was a faulty abort switch. There was a bit of metal debris inside the switch, and it created a short and told the computer that an abort was called for. Fortunately, the engine was not running at the time, because if it had an abort would have been triggered. The MC folk studied the problem and wrote new code, which was painstakingly sent up to the crew, who manually entered it into the landing computer. This software upgrade was not proofed before use. The change had to tell the computer to ignore the abort code at some stages of the flight, but to make the switch available at the later stages of the landing (in case it was really needed).
One of the missions had one of the five second stage engines cut out, but they burned the remaining engines longer and achieved orbit.
Any one of these failures could have caused a mission failure (which means no landing, not necessarily death in the cold void of space, with the bodies of the crew perpetually orbiting, forever).