johnny, I don't have your experience, but I do know about the anger some boys build up, and how it hurts people, and especially themselves. Here are some things I am pretty sure are true...
Your love and care will help. They won't fix, but they will make things a bit better. The kids who are really damaged are the ones who have no-one there for them. If you love him and you are showing it, it will make a difference.
It'll take time. These boys have had a really bad several years. I think you should expect it to take at least as long to 'make things better' as they spent with things being bad. It's no bad reflection on you that it takes time: mental ill-health creates real damage that needs healing, and you can't wave a magic wand and fix it immediately, any more than you can with a broken leg or some other kind of physical injury. It might help to think of your son as having been in an 'emotional car-crash' - it'll take years, and 'emotional rehab' to get him healed.
There's probably a certain amount of anger that needs to come out, before he can get well. It sounds like he has real reasons to be angry. Try to let him be. If he doesn't let it out, but keeps it bottled up, it will hurt him - his mental health is likely to suffer and he may self-harm as a 'release'. So he needs to be able to express his anger safely, including his anger with you. Let him express it as much as you can, tho don't let him abuse you. So, shouting and raging may be what he needs to do, but there should be no physical violence. Get some support yourself (like counselling) to help deal with that, cos it will probably hurt, or make you angry in return.
Support for yourself is also a good idea because there is so little support for him. It will take months to arrange anything. You will probably be left pretty much to your own devices. Look after yourself, and you'll be better able to help him.
Whatever you think about his mother, it's probably best to keep it to yourself. She may deserve criticism (or more), but psychologically, your son will identify with her because she is his mother - he is 'half her' - and if you slag her off, he will feel you are attacking part of him, too.
Is he smoking skunk? It's likely, given his age and life experience. There won't be much you can do about it, but you should be aware it's a depressant, a disinhibitor, and for some people (particularly, it seems, vulnerable young men) a psychotic.
Encourage anything that takes your son's attention outside/beyond himself. It will help him to do something. The pets may be his attempt to think about and look after someone else - he may not be able to do it well at the moment, but his instincts are right, because looking after others is good for your mental health. There may be a local voluntary group that he could get involved with, with a focus on young people or those with mental health needs - as a starting point, Google the name of your area + 'mental health + music/art/activity'.
Good luck. :)