If all the areas learn routes to the other areas through Area 0, does it mean that two non-backbone areas cannot communicate with each other? What does ABR do then?
You are correct. Non-Area 0 areas cannot directly communicate; all inter-area traffic is through Area 0. An ABR is a router with one foot in in Area 0, and another foot in a different area.
The one exception where you may have two non-Area 0 areas connected to each other involves a virtual link, but even then, the area not touching Area 0 must communicate using the virtual link to Area 0. This is not a recommended solution since traffic will not be direct between the two non-Area 0 areas, but it is available if there are no other options. It may also be used if you have a disconnected Area 0 to join the disconnected part of Area 0, but, again, this is not a recommended solution.