A non-terminal symbol is a type of symbol used in formal grammars, particularly in context-free grammars, to represent a set of possible strings that can be generated by the grammar. It acts as an intermediate step in the derivation process, eventually leading to terminal symbols that form the actual strings of the language.