First I think that you might need to do a tougher job at protecting the 2 year old from himself. Child locks on all cupboards and drawers, or had he figured them out?
As far as behavior problems, you know that you have to nip it in the bud. Be consistant. Everytime he spits or acts out you punish him. Time outs, taking toys away, etc. But decide exactly what that punishment is and stick to it. Don't have it be a timeout sometimes and a spanking other times and other times you ignore it. Same thing every time is how he will learn. Always explain what he did and why he is getting punished. Then always make him say he's sorry when it is over.
Same thing with bedtime. Once he goes into his room and bed/crib, that's it for the night. If he is able to get up and out, then you have to march him back to his room everytime. Just say, "it's time for bed" and put him back. No yelling, no explaining, just back to bed. If he screams, he screams. You stay calm. He's old enough to know what to do and not to do. He is acting up to get attention and it's working. If he doesn't get out of bed, but just doesn't sleep, leave him be. Of course if he's in distress you can go in and calm him down verbally and tell him to go to sleep. But if he doesn't stay in that room in that bed he won't learn that's where he needs to be. It will probably take a few long nights, but he'll get it. You have to teach him that when he is a good boy he gets that attention in a positive form and that's much better than the negative form.
All that said, remember to pick your battles. Let the little stuff go if it's no big deal. And make sure that they are both getting enough positive attention and reward.
Good luck. Sorry about the haircut. You know you'll look back and laugh at that one, I hope you got a picture. This is a tricky age...but after reading these boards, it seems that they all are.