He does it because he can.
My girls will still give me a hard time about getting dressed in the morning. One is six and the other is four. They would stay in their jammies all day given the chance.
I think it is just something he has chosen to battle about. You have to somehow convince him that you are the boss and he has no choice in the matter. He will put on a shirt and if it bothers him in some way then he has to tell you what is hurting him. If he can't then explain that he has to get dressed everyday and that is that.
For me I just tell the girls that they have to get dressed period. They use to fight me, but I would stop what I was doing and stop fighting them. I would tell them that they were going to get dressed and they would stop fighting me or they would be punished.
I explained that if they fought me then they weren't obeying me and that meant they would get a spanking. Out right defiance always gets a spanking if warned and it doesn't stop.
A handful of spankings in their life and I can assure you that my girls typically only need to be calmly warned that they need to listen.
Now I always listen to their complaints and explain why we are doing what we are doing. But in the end I'm the boss and they will do what I tell them to do.
A child that doesn't have just a tiny bit of fear for their parent typically won't listen to them and has no respect for them. Ever see a mommy in the store begging a child to get off the floor, to stop doing something bad and the child yells no or just keep kicking and screaming???? That is a child that has no respect for their parents and could care less what that parent tells them to do.
Many people today would read this and think "Oh how horrible" She's so mean. I assure you my kids adore me. We have mutual love and respect and they know that mommy loves them more than anything. They know that I want them to be sweet, well-behaved little girls even when mommy isn't around. All children want boundaries, rules, and limits...and yes consequences.
You have to decide for yourself what kind of consequences he will care about and then put that in place when you are dressing him. Explain that he will not be allowed to throw a fit over his shirts anymore. Tell him the consequences and then put those in place the second he starts to rebell. He will test you to see if you mean what you say.
And yes children can understand consequences at two. Mine started understanding right from wrong and what was accepted about the time they started to crawl.