I have heard that over time, software can begin to show signs of wear and tear.
What does wear and tear of software mean?
Software itself not being a physical entity, so how can there be wear and tear?
The idea is borrowed from thermodynamics. When applied to software, it means that as you introduce changes into a system, the system only gains disorder. There are techniques that can be used to limit the amount of disorder, such as refactoring, but over the course of its life, there will be a net increase in the disorder of the system. The amount of disorder is often tied to the ability to continue to maintain the system.
Software rot is similar. As you change any aspect of the system, from the environment that it runs in to the underlying requirements that drove the design and implementation, the state of the system changes in a way that makes it "worse". It could range from cosmetic differences (an underlying UI library is updated and behavior of the system changes) to functional (changes in CPU architecture influence the run-time characteristics of the system, leading to timing or synchronization bugs). Software rot doesn't necessarily require changes to the software system, but only in the environment in which the software is deployed.
Over time there are many things that could happen to a code base that could cause it to deteriorate.
These could all lead to what could be called wear and tear of software.
It is true in the strict sense that the software itself does not wear out. But everything else about the entire process of deploying, configuring, and using software does go through changes that can have the same effect in the impression of the user. You've listed some of them already. Others include:
Many factors can conspire against a program that is considered acceptable, good, or even great to erode its reputation and ability to perform its function.