ругать
to express discontent about someone's actions with words of course. It's a type of a word to convey your strong dissapproval of someone. Like when someone did something stupid or wrong. A good example would be a parent telling off their child for something bad the child had done
ругаться
It has multiple meanings. If you ругаться с кем-то that means that you have a quarrel with someone. Like when people yell at each other, calling one another names, trying to abuse each other with words etc.
Another meaning is to swear like saying the bad words
And the last meaning I can think of right now is to express discontent about something happening, happened. It's like when you drop your phone and start yelling because of that and etc
ругать матом - the same as ругать but it shows that you mostly say swear words while doing that
ругаться матом - the same as ругаться but using mostly swear words
спорить - it's just to argue. It's when two or more people have different opinions about something and they try to make their point about that to prove their opinion right. It can be a pieceful arguing or violent one.
ссориться - it's to lose your friendly (or more than just friendly) relationship with someone because of the words you or both of you had said to each other or because of the actions you or both of you did