It sounds like you have a child with low "social" intelligence.
People with low social intelligence have trouble figuring out and valuing social rules. Like your son, they can be academically very smart (have a high verbal/mathematical intelligence), but that doesn't help them understand why other people put value on behaving in certain -- sometimes arbitrary-seeming -- ways. (E.g., in most U.S. cultures, when you meet someone you're supposed to say, "Hi, how are you?")
They don't grasp instinctively what most people do, that social communication is not just about information but also about emotion. (E.g., when people in the U.S. say, "Hi, how are you?" they are not looking for detailed health information, but to "connect" with the other person, to indicate positive feelings towards him.)
Sometimes -- but not always -- people with low social intelligence have trouble reading people's faces, or understanding their emotional cues. This is common in children diagnosed with Asperger's syndrome, BTW, but (I think) one doesn't have to have Asperger's to have low social intelligence.
Social rules are what allow people to live/work together without friction. Without knowing the social rules of the society you're in (Japan has different social rules from the U.S.; upper class British society differs from working class, etc.) you would inadvertently give all sorts of false signals. Worse, if you don't understand that people are reacting to you -- often negatively! -- based on signals you don't realize you have sent, the world becomes a (scary) unpredictable place.
Children with low social intelligence require instruction. Without it, they will give offense without meaning to, and will have life-long difficulty getting along with others/making friends.
The first step is to listen to what your son is telling you. Ask questions. If the answers indicate he doesn't seem to understand a situation he was in, explain it to him. If he doesn't know how to deal with something, help him figure it out. Tell him the rules. (This may be hard for you because you may not ever have had to think consciously about them before.) Tell him if learns the rules he can get other people to stop bothering him without hitting them and getting in trouble.
If your son says another child stinks, it's possible he means that literally, not judgmentally, and is commenting on the phenomenon. Ask him what he means: do they smell like laundry detergent? Like onions? Explain that people sometimes do smell differently, and come up with some reasons why. Ask him if he can think of any. Then say while it's always okay to ask you or his dad for information, in our society it is not polite to comment to other people on other people's smells. If he wants to know why he has to be polite, explain to him that politeness is how we get along with each other without making other people mad, so people are happy to be with each other. (If he persists, explain to him about social rules.)
If he says children are bothering him, find out how. Six-and seven-year olds, even well-meaning, well-behaved ones, do bother each other. They don't yet have the empathy to understand how the other child feels in all but obvious situations (they pretty much know not to hit, or take toys away, but maybe not to refrain from saying, "Ha, ha, I won!").
For some things (maybe another child likes to touch your son's cool bear hat), you may be able offer a suggestion of how to fix the problem, or better, ask him if he can think of a way of fixing it. However, it's also possible that things another child has no control over are bothering your son. Maybe someone stands too close, or laughs too much, or has an unpleasant sounding voice. Tell him that you sympathize, but that children cannot help the way they laugh, or talk, or smell, or look; we are polite and kind to everybody, unless they are deliberately doing mean things to us. Tell him that not everybody is bothered by the same things. It's possible there are things about him that might bother another child, but he would still want that kid to be polite and kind to him, right?
Talk to him about being a good friend. Together, come up with a list of things good friends do. Ask which kids in his class might be good friends.
However, also tell him that we don't have to like everybody, but we are polite and kind to everybody. I told my daughter that there were a couple of her friends' parents that I didn't like, and who didn't like me, but that she would never be able to guess who they were because we are polite and kind to each other. I think this almost blew her mind, BTW, she kept asking who they were, but it really got the concept across.
Finally, if he is asking for help/information (the inappropriate things he says) and you are responding with dismay and disapproval, it would be natural for him to talk back and otherwise act out. Try to listen to him more. If he does things you don't understand, ask him his reasons. (Yes, all children need to be listened to, but whenever your child has a different temperament than you, it is even more important.)
Consistency between your husband and your self would be ideal, and I agree with Valkyrie that it is necessary for discipline purposes. See both her and balanced mama on what to do when he does misbehave. However, if he is acting out because he is a bright child not getting the answers he needs, he will be helped enormously by even one parent paying attention and explaining things. I find it dismaying that he seems to be confiding in his teacher ("a few kids in my class stink") when he should be confiding in you. I think, however, that if you start trying to understand what's happening with him, if you become his ally in figuring out how to behave and why others behave as they do, he will start confiding in you again. In fact, he will probably return to the common pattern of behaving well at school and acting out at home; but I think his misbehavior at home should decrease substantially.