The so-called “ERC20” tokens come from the proposal / improvement process implemented by the Ethereum Foundation on its Github account. ERC literally means Ethereum Request for Comments: a process by which a person asks the community to review and comment on a proposal for Ethereum.
In this case, the 20th proposal posted on the Github on November 19, 2015 regarding a proposal for standards for the development of tokens on Ethereum - it was therefore called ERC20.
The idea of a programmable token was one of the simplest to implement on the blockchain. Initiated by frozeman (Fabian Vogelsteller), the proposal immediately sparked intense discussion. It is therefore important to emphasize that ERC20 is a standard: it defines the functions and events that a token must manage to be qualified as ERC20. It is not a specific code or product. Everyone can create their own ERC20 token code as long as it respects standard functions and their behavior.
In this case, there are many ERC20 token contracts: the code provided on ethereum.org, the modular code of OpenZepplin, the code of this wiki, etc. Any code implementing the ERC20 specifications creates an ERC20 token.