Event handlers are method executed when an event is triggered, e.g. a record is being inserted or a form control value was modified.
CoC is used to extend types and methods.
You typically can't use both, e.g. because you want to extends a method that doesn't have a corresponding event you could subscribe an handler method to, or you want to add a an instance variable to a class, which has nothing to do with event handlers.
In some case, you have a choice, e.g. you can either create a CoC extension of insert() method or use an event handler of Inserting/Inserted event. Sometimes you can use both, but you must understand that they're executed at different times, which may make a bid difference. For example, there may be code in insert() with a DB transaction. Events get raised in super(), in the transaction, but if you use CoC, you're outside the transaction (and you may want to create another one on your own.
There is also a predecessor of CoC that allows you to subscribe to special events before and after method calls, but they're rarely useful. CoC is both easier to write and read, and safer.