What happens to programmers who lack teamwork?
Then it becomes difficult to work on projects that are too large for a single programmer. Difficult for the solo programmer, and difficult for the rest of the team.
Where does the problems begin?
All sorts of places. We currently have a single programmer who is bad at working as part of a team. He tends to make short cuts that have bad effects on the rest of the application because he is too narrowly focused on fixing the bug in front of him. Or writing the new feature in such a way that it isn't compatible with the rest of the application. We have to rearrange things so that every code check-in of his is reviewed by the rest of the team. But in order not to single him out, we also review everyone else's code check ins, so along with the morning status meeting, we get no work done until after lunch. So at our office, this means that 4 people are losing a 1/2 day of work each and every day because one guy is lousy at team work. I can't say it is an improvement over the previous adventures, because we could randomly lose a day to a week (usually chasing new bugs) from his check-ins that break things (we call those "robstacles"). Some of the fixes to his code will end up clearing a half dozen bugs because of how tangled and messy the application is (my recommendation to nuke it from orbit, and start over again because that's the only way to be sure was not accepted).
When we are in a generous mood, we call him a "head down programmer" has he tends to look down at the keyboard and type real fast. He doesn't pay attention to what others are doing.
Does being a good programmer compensate at least a little?
No. Most programmers who are bad team players have a very high opinion of their own skills, and this is called the Dunning-Kruger effect. PDF of paper.
Maybe: the solo programmer would need to be far better than the rest of the team. But this just means that no one else can maintain what he does; and when that happens, it probably means that the solo programmer is not actually far better than the rest of the team - he (and it is almost always a guy) is just better at fooling everyone.
In business software development, the company will be around long after you leave. Programs were most likely written before you started, and will be maintained long after you are gone. If you write things that are so special and amazing that no one else can understand them, then you end up in the situation that Naughty Dog is in - their lead developer quit, no one else understands the proprietary programming language the guy wrote (and wrote things in), so they are now having to switch everything to C++.
Is it normal for a programmer to have a vision about his work instead of just doing what he is told?
It is common - like a traffic jam or diabetes. I would not call it normal. In the corporate world, there are lots of other things to consider; the strong ego that many developers have typically makes the developer think that nothing else matters. This "lack of fit" and lack of consideration for the rest of the business is why so many manager-types come to the conclusion that software developers are hard to work with.