Hahaha hey!
Well', first of all you don't say IDIOTO, you say IDIOTA. No matter if you say it to a man or a woman, it's always IDIOTA. That word, in Spanish, is not as offensive as it is in English.
Idiota, menso and bobo are moreless the same thing. They might be taken as synonymous but, as a native speaker, I can tell you they're used under different contexts.
I'd say that the only difference is the "grade of offense" that these words imply. For example, you say idiota to someone who offended you. You say menso to someone who made a spelling mistake and you say bobo to offend someone you love (like a brother or a boyfriend)
Naca (or naco if it's a man) means someone lack of culture, whose tastes in music are reggaeton such as Don Omar or somethin') or banda (Banda Machos, for example). That word is very used by teenagers. Chaka is moreless the same.
I think you shouldn't learn that slang hahaha, specially naco and chaka, they're quite offensive.
Anyway, hope this helps you to understand slang better.
greetings from Mexico.