This is getting old but I wrote abother Sam defense post about why Sam's anger in S7-8 is justified because I saw two different fan accounts accusing Sam of it....
Sam called out Dean because he was being a hypocrite.
There is no 100% acceptable reason to save Benny & Emma but kill Amy (and vice verse) Because such a thing just doesn't exist. That's why criminal law and the judiciary exist these days. Moreover, Sam and Dean do not have such authority. They are just hunters. Their job is not "killing every monster who killed people", or punishing monsters. Their job is saving people.
Sam and Dean killed an innocent victim who turned to a werewolf (or a vampire) who killed no one yet because they are dangerous. Sam and Dean, especially Dean killed lots of innocent vessels for self-defense and convenience. Sam and Dean wanted to kill Bobby's wife before they knew what exactly happened, Dean wanted to kill Jack because he knew jack could be dangerous even though Jack is an innocent baby, just like Emma.
But at the same time, they didn't kill Crowley who had killed probably more than hundreds, thousand. They didn't kill Cas when he come back even though he killed lots of people, more than Amy needless to say, they didn't kill witch couple they came across in S7. They didn't kill Rowena, Meg, etc... I like those characters so I don't mean that they should have been died. There were reasons, but that doesn't change the fact that if Sam and Dean killed them when they got a chance, they could have saved many victims who were killed by them.
What I want to say is that they always have to make a choice, Sam and Dean have to think hard when they decide if the killing is inevitable or not, because there is no such thing as a "code of law for hunters". There is no one, single rule that can be applied in any situation. There is no rule saying "you can kill Amy, Jack and you shouldn't kill Benny, Emma" (also vice versa)
Sam believed that Amy can change because he was able to see how much effort she made. She was working as a mortician. She killed her own mother because she wanted to change, she only killed criminals, even the polices were glad to know they died. Mostly she only killed for his son. Not that she is the mother of the year, what I want to say there are reasons, more than one when Sam believed Amy could be saved.
I'm not saying that "Dean is wrong." As a hunter, his choice is pretty reasonable. But the problem is that he didn't try to convince or talk to Sam. Like I said since there is no "code of laws for hunters" if Dean wanted to kill Sam's friend, at least he really had to try to convince Sam why Amy has to die. Sam would understand that, or not, but at least that way he wouldn't so pissed when Dean decided that his daughter & friend deserves life.
Probably you want to say "but Benny and Emma didn't kill anyone yet" part true, part false, but anyway, that doesn't matter. Like I said Sam and Dean killed many monsters who didn't kill anyone because they are dangerous. Also, when Dean killed Amy, Dean didn't say "you killed people so this is a punishment." Dean said, "you will kill again." The thing matter more to Dean was the possibility of harming a person.
Emma is a victim, but Emma was not the first victim killed by Sam and Dean because they are dangerous and they are not the last. (Jack is also a victim in some way but Dean wanted to kill him too) also, she didn't show any clue of humanity like Jack or Amy did, she seemed hesitating only because Dean had a weapon. What happens if Dean let her go and this time she came back to actually kill Dean? Also, Sam who will try to protect his brother? If Dean being willing to kill the vessels of demons is justified because it is self-defense, why Sam's action should not be justified?
Benny already killed people before he died. He may have made atonement. But if Dean's logic is true, that doesn't matter because people can't change.
" No matter how hard you try, you are what you are. You will kill again. "
But nothing here actually can be the perfect justification for killing Emma and Benny because such a thing doesn't exist.
People change. Dean changed. Benny changed, (even though he did kill people after he resurrected) And... Amy could have been changed.
Sam wasn't angry just because his friend was killed. He was angry because Dean kept it a secret for a long time. Because Dean didn't trust Sam's judgment, he denied Sam's morality by killing Amy, didn't even try to convince him because Sam was "too unstable".
But Sam accepted it. Sam forgave that Dean killed his friend, forgave Dean lied. Sam accepted Dean's morality and " code of laws " for hunting, and that includes
" There are certain people in this world, no matter how dangerous they are, you just can't. You couldn't do it, so I did. That's what family does – the dirty work. "
Until Dean couldn't do the same thing for his daughter and friend. Until Dean decided to let monsters go without talking about it with Sam.
So, I think Sam's anger is pretty much justified in this case.