A LANGUAGE is the set of words, their pronunciation, and the methods of combining them used and understood by a community. We normally refer to English, Chinese, Thai, Vietnamese, Russian, Polish, etc. as languages.
The Chinese language has many dialects (Mandarin, Cantonese, Taiwanese, and many others). The "Indian" language has many dialects (Tamil, Hindi, and several others). I would call a DIALECT a significantly modified version of a base language. For example, Chinese dialects, Indian dialects.
Now English is a language. Both British and Americans speak English. We speak a common language. However, British English and American English have digressed considerably to the point where some words have different meanings completely. I would personally call these two different dialects of English, but English-speakers do not call these two version of English dialects. I don't know why. Perhaps because the differences are not that significant.
American and Britons pronounce IDENTICAL English words differently in many cases, for example we pronounce certain vowel sounds differently. These REGIONAL differences in pronunciation of identical words is what I would call an ACCENT. Thus, Americans hear a British accent and British hear an American accent.
Now inside the USA, the north and south parts of the USA also pronounce some identical words differently. Thus, within the USA, there is a northern American accent and a southern American accent. I speak with a southern American accent.