THAC0 stands for To Hit Armor Class 0. If (as is the case with all the base classes) your THAC0 is 20 at first level, this means you must roll a 20 to his an Armor Class of 0. To hit an armor class of 1, you must roll a 19. I seem to recall striking an enemy wearing full plate armor and from a direction protected by their shield (if they have one) comes out to an AC of 0.
The base AC of everything you meet, in general, is 10. Therefore, at a THAC0 of 20, you hit unarmored opponents with a dexterity of 10 (the average of 3d6, the roll for 2nd edition stats, is 10.5, so 10 is average) about half the time.
Armor class is modified by dexterity (high or low), armor worn and shields carried, natural armor (particularly tough skin, such as that of a dragon), magical effects (armor/shield spells, magic items which improve AC), circumstance (cover, for example), and other odd things.
Yes, this system is bass ackwards. As a system for arbitrating hits and misses, it predates video games by a bit and is a step away from D&D's original inspiration, war game simulations involving tactical deployments of troops and vessels. They got rid of this system in 3rd Edition, but it would have been taking significant liberties with TSR's system if they tried to get rid of it entirely here.