The Airways that the planes fly on criss-cross the sky and there are many, many intersections where there can be a potential for 2 aircraft to meet.
So yes, it is normal that aircraft are routinely flight planned to be on "collision courses". The flight plans don't keep aircraft separated. They are used so that Air Traffic Controllers can know the exact routing and plan where any conflicts may occur. It is normal and safe as ATC can then keep the aircraft separated using radar.
Generally aircraft flying eastbound fly at odd altitudes and westbound aircraft fly at even altitudes. This works quite well but we can still have 2 westbound aircraft both flying at 36,000' on a "collision course" because westbound can mean any track from 180 degrees to 359 degrees.
In this case the 2 aircraft were crossing paths at about 90 degrees to each other at the same altitude.
Normally they would be constantly monitored and the ATC controller would simply have one aircraft climb or descend to avoid the other aircraft. Another common practice is to tell one aircraft to turn slightly off course to avoid the other aircraft.
On this day the ATC system and the controller were both overloaded and a number of factors contributed to the controller not seeing the conflict until it was almost too late. At the last minute he told one aircraft to descend to avoid the other. This action alone would have been fine but the order was given far too late.
The Traffic Collision Avoidance System on the aircraft also saw the conflict and automatically issued an instruction for one pilot to climb while instructing the other aircraft to descend.
The controller did not know that the TCAS had also spotted the conflict and his command to descend was contrary to the TCAS climb command. The pilot chose to follow the controller's instruction instead of following the TCAS climb instruction. The other aircraft was also following his TCAS instruction to descend so both aircraft were now descending while still on a conflicting flight path routing.
TCAS is there as a safeguard when the ATC system fails. It should always take priority over an ATC instruction. It is clear that the ATC system failed these pilots and TCAS operated as it should.
As pilots we spend so much time following ATC instructions that I can see how it would be difficult to ignore the controller and instead follow the TCAS instruction.