I was just thinking, I had a situation where a co-worker (let's call him Josh) was critical of me. He went to my boss.
Josh and I were working on a important project. He outranked me, but I wasn't a direct report. I had serious engineering questions about his design and I stated my reservations in a way that I felt was professional. I did make my objections clear (which were absolutely correct). I don't feel like I acted badly toward him; it is certainly possible that I could have done things differently to make him feel better... but it would have helped if he and I could have spoken about this.
In my performance review my boss said "someone has a problem with you because you are not a team player". I knew right away who it was. I was really upset that Josh would go to the boss, rather than coming to me. I told the boss this... I said "I know that it is Josh, and I find it a little ironic that he would tell you that I am not a 'team player' rather than coming to me directly. I don't know what he means by 'team player' but this doesn't feel like it.
The project failed (for many reasons not just my objections). Josh left soon after, and so did the boss. I ended up with with Josh's job.
My point is that it is always better to treat co-workers with respect. This means going to them directly when there is an issue. It is always better (in my opinion) to work things out as two human beings.