Vegeta calls Goku "Kakkarot" because that was his name on (SPOILER ALERT!!!) the Saiyan planet, before he came to Earth.
Kakarot
Vegeta!!!
Depend on which version of Goku you're speaking of: Goku SSJ1 vs Majin Vegeta: Majin Vegeta Goku SSJ2 vs Majin Vegeta: Equal Goku SSJ3 vs Majin Vegeta: Goku Goku SSJ4 vs Majin Vegeta: Goku
Goku is the name that Gohan gave him, (the old Gohan) but when he was a baby, before he was sent to Earth, he was called Kakarot, which is what Vegeta calls him most of the time
Right. It's because Vegeta visted Goku and Vegeta forgot that he had ammnesia and later Goku said he was a good guy.