"But if you write code that doesn't change the existing system, you simply test the additions" boils down to the open/closed principle. It's much safer to create a new class (often by inheritance) than to modify the guts of an existing class that already has dependencies.
I think OOP is easy, so long as the system you are modelling can in fact be broken down sensibly into distinguishable objects. However, a lot of people try to use an OOP approach when this is not appropriate and end up getting into a bit of a mess.