Having arguments with your best friend pretty much comes with the best friend territory. When two people feel they can be completely honest with each other, there will be disagreements... BUT that doesn't mean there has to be hurt feelings.
Now, I do something people may find strange but it's actually immensely helpful. When I'm upset or annoyed or sad about something my friend did or said, I PRETEND to talk to him. I literally talk on my phone like I'm talking to him and just say whatever I need to say. There can be yelling or tears or snippy comments but by the end of it, I usually realize what the REAL issue was. Usually, the surface issue is a smaller part of a larger issue that's been going on for a while. And THAT'S what I choose to talk to him about.
Yes, this talking into my phone to no one in particular may be a little weird but it's a great way to get everything out that I want to say without all those nasty feelings of regret and guilt for saying something in the heat of the moment that I desperately wish I could take back.
I recognize for some people this method might be hard or might intensify an already boiling emotion. This works for me because, for the most part, I don't have a problem tuning into my emotions and forcing myself to dig deeper into things that bother me. But if you have trouble with that, no worries. Another option is to talk to someone who you know is a good and patient. You need them to be patient because you will snap at them a little. You need them to be a good and active participant so they can ask you questions that might help you realize why you are actually upset.
So to wrap it all up, before you talk to your friend about what's bothering you, think about it, roll it around in your mouth like some wine and really taste it. Really figure out what's upsetting you. This will make your future conversation with your friend so much more effective and calm.