This doesn't sound like a fun relationship at all. You sound incredibly insecure and you don't trust your boyfriend. Has he ever actually done anything to break your trust? He is allowed to be friends with whomever he wishes, even his ex. I understand that it's not ideal for your boyfriend to be in contact with his ex - most people don't like that, and most people don't stay friends with their exes unless there is a reason for it. I think you are nitpicking on the minutiae of your problems, like the snapchats and him saying another girl's name while he's sleeping (honestly, if he talks in his sleep, you can't fault him for what he says, he's asleep!). Him telling you to suck his dick is either seriously rude, or that comment in your OP is out of context. Did he just randomly ask you that while you were arguing? Was he trying to make a joke out of it, or was he serious? It's hard to tell from you initial post because he could have been trying to break the tension, and said something stupid.
I think you need to take a good, hard look at your relationship. Ask yourself the following questions and be honest with yourself: Do you trust him? Are you comfortable with him? Are you happy? Then, ask yourself what you need from your boyfriend in order to feel better about your relationship. Maybe it's better communication, maybe he needs to be more respectful of your boundaries, who knows... only you know what is right for you. I think you should talk to him about how you are feeling. Try using "I feel" statements, and use language that doesn't come across as judgmental or critical of him. Then tell him what you need from him to feel more secure and happier in you relationship. Then ask him to tell you what he needs from you. You both need to put the same level of effort and commitment into your relationship, otherwise it won't work out. Simple as that.
"Caring is not an advantage."