Obviously, it is impolite to use offensive terms such as Polack and redneck. But biased language can take more subtle forms. Because language evolves over time, names once thought acceptable may become offensive. When describing groups of people, choose names that the groups currently use to describe themselves.
Negative stereotypes (such as “drives like a teenager” or “haggard as an old crone”) are of course offensive. But you should avoid stereotyping a person or a group even if you believe your generalization to be positive.
Be careful about making generalizations about what “those people” do or how “they” behave or what is true about “them.” Such constructions often signal stereotpying and can be perceived as offensive, though often not intended by the speaker.