This explanation of Surface Codes has a lot of detail and starts from the basics. It should hopefully help out, as well as looking at some of the initial Toric Code papers by Alexei Kitaev.
My understanding of the term (hopefully someone more knowledgeable can chime in if I'm incorrect!) is that it's because the errors needed to create a logical error have to be non-local, and can be deviated. IE if you take the Toric code which exists on a torus, a logical operation is a loop of errors around the torus, which cannot be smoothly modified into a local error since the topology of the space prevents it.