a useless symbol
Picture a subway map with a station that no track reaches, and another station whose tracks all loop forever without ever reaching a destination. Neither station is any use to a traveller. A useless symbol in a grammar is a variable that, in the same two ways, can never take part in producing an actual finished string from the start symbol.
A variable is useful only if it satisfies both conditions: it must be generating (it can derive some string made entirely of terminals) AND it must be reachable (the start symbol can derive a sentential form that contains it). A symbol that fails either test is useless. The two failure modes have names: a non-generating symbol can never bottom out into terminals (it only ever rewrites into more variables, like B -> CB forever), and an unreachable symbol is fine in itself but the start symbol can never get to it. Useless symbols and every rule mentioning them can be deleted with no effect on the language.
Removing useless symbols is the last simplification step, and its internal order matters: you must remove non-generating symbols FIRST and only then remove unreachable symbols. Doing it the other way can leave junk behind, because deleting a non-generating variable can make a previously reachable variable unreachable. The reward is a tidy grammar where every variable actually contributes to some derivation, which is cleaner to parse, to convert to normal form, and to reason about.
S -> a | AB, A -> a, B -> bB. Here B is non-generating (B -> bB -> bbB -> ... never reaches a terminal-only string), so AB can never complete; deleting B and the rule S -> AB leaves S -> a, A -> a. Now A is unreachable from S (nothing mentions A), so it too is deleted, leaving just S -> a.
Two ways to be useless: cannot reach a terminal string, or cannot be reached from the start.
A grammar with NO useless symbols can still generate the empty language only if it has no rules at all after cleanup; if the start symbol itself turns out to be non-generating, the language is empty. Useless-symbol removal does not change membership, only tidiness.