You've been with him since you were a child, and that may be why you aren't utterly outraged at what he's doing. He's made this seem 'normal' or OK.
It isn't OK. You say you're 'best friends'. But you don't have any other friends, so how do you know how a best friend acts? How can you say he acts like a best friend? I can tell you that best friends don't say unkind things, don't undermine each other, don't control what the other wears or how they live their life. Best friends build each other up, support, make each other feel better.
You shouldn't have to 'check boxes'. You shouldn't have to wear dresses or make up if you don't want to. You shouldn't have to pass a series of tests every day just to make your husband happy.
If he loves you, really loves you, he will love you in leggings and a sloppy jumper. He'll love you with your hair uncombed, and bare faced. He'll be proud of your weightloss and encourage you if you want to do more. He'll tell you he loves you no matter what your weight is though.
Even if he's perfect the rest of the time, twice a year is twice too often for him to be unkind and judgemental. But it's more than twice a year, isn't it? You're living on eggshells every day while you check off his tick list of what makes a perfect wife.
And what does he do to be perfect for you? Have you given him a list? Does he jump through hoops to please you? Does he worry about being loveable?
Finally, I'm not saying he's having an affair, but 'only leaving the house to go to work' doesn't mean he can't be having an affair. The most common place for affairs, I believe, is in the workplace.
You are worth more than this. You deserve a loving and supportive husband. Please take steps to build up your self esteem. You will feel better about yourself, stronger to deal with his unpleasantness, and will hopefully see you deserve better.
And please confide in someone, like your parents. If my DD told me what you've said here, I would be encouraging her to leave, and offering all the help I could give to make it happen.