Some are named after regions in India (Madras Bhuna etc), or after the cooking method (tandoori, balti, karahi etc). I know Rogan Josh translates as "red curry" (being that it is tomato based) and i think Dhansak also refers to the contents of the curry. Chicken Tikka Marsala doesn't exist in India and was invented in a curryhouse in Birmingham. These names you find in the Indian takeaway are derived names so English people can distinguish between different types of curry - there is no such thing as a Madras curry in an indian restaurant menu in Madras for example - a local would simply ask for a curry with a bit of heat in it.
The reason for the different spellings is that their language doesn't use the abcdefghijk.... symbols that we recognise so it's all down to interpretation of how the Hindi/Urdu (?) word sounds hence different interpretations at different restaurants. (Note how RCP refers to it as Korai and i refer to it as Karahi)