Stay safe tonight OP.
You're absolutely doing the right thing.
The two incidents you've described (sons bed and dog) are appalling. It doesn't matter how long ago they happened.
What matters is that he's shown himself capable of that behaviour - the frequency is irrelevant.
Please also don't dismiss the control he's exerting over you on a day to day basis.
Not seeing friends to avoid an atmosphere/argument is a textbook response to abuse in the sense he's "been training" you to behave as he wants.
Don't be blind also to the fact that abusers use "kindness" as a tactic in the same way they use being nasty and aggressive.
It's all part of the same strategy to "reward" you for behaviours they want to see more of and "punish" you for behaviour they want to stop
When you tell him him be prepared please. He will pull out all the stops.
He will likely cry, guilt trip you, gaslight you and if that doesn't work turn nasty. Potentially very nasty.
Make sure you keep your phone and car keys on you and I'd also advise you to have a "grab bag" full of essentials (make sure you pack a credit card/cash or your purse) in the car just in case you and your son next to make a swift exit. Do not be afraid to call the police if you need to.
Finally don't feel bad about not leaving sooner. It's a very tough situation to get out of simply because you've been more controlled that you realise even now and frankly since 17 haven't known any different.
What's important is having faith in yourself now to ensure you and your son will have a better future.