Is there any difference between 'Bad English' and 'Poor English'? If yes, when I should use them?
Yes. "Bad English" is an example of "Bad English". "Poor English" is an example of Proper English.
"Bad English" is grammatically correct, and perfectly understandable. But in contexts where both "bad" and "poor" are appropriate (and have the same meaning), "bad" is informal, whereas "poor" is formal. Most native English speakers learn the word "bad" before they learn the word "poor".
For example, a school teacher might talk about a student who has "poor English language skills"; she might want her students to "speak English well". (Notice that "well" is an adverb, which modifies "speak".)
The student might just care about whether he has "good English" or "bad English". If he just started learning, then he probably knows the word "bad", but he might not know the word "poor". So people with "bad English" are less likely to say things like "poor English".
By the way, there are many situations where "bad" and "poor" are not synonyms. For example, Michael Jackson sang "I'm bad." But he had lots of money, so he was not "poor" financially. He was also a very good poet and singer, so he was not a "poor" artist.
I’m sorry but the above answers to this question, of bad vs poor English, are shockingly incorrect! In fact, the words “good” and “bad” imply a sense of morality, like right and wrong; therefore “bad English” actually means “evil English” or “misbehaving English”—-which are nonsensical. So the correct expression would be “poor English.” However, it would be still linguistically incorrect to say “Bill speaks poor English.” It would be more correct to say “Bill speaks English poorly,” or most correctly “Bill speaks English incorrectly.” Just remember, good and bad, and right and wrong imply a sense of morality—-righteous and evil; whereas correct and incorrect mean just that.