MIDI defines the protocol for messages between synths and other devices that want to "speak" to them. That is, the kinds of messages, their format, etc. One of these is the program change message, which is supposed to tell the MIDI device to change to a different patch. But it does not specify which patch numbers correspond to which particular sounds. So, Musical Instrument Manufacturer A was free to have a piano sound summoned by Patch#1 while Musical Instrument Manufacturer B could choose Patch #75 to be a piano.
After a short while, people who had made sequences based on using Synth A discovered that if they wanted their sequence to be played with similar instruments using Synth B, they would have to reassign the patches. Kind of a pain in the neck, and also somewhat confusing for newbies to understand and deal with.
From this was born an extension to the MIDI spec called General MIDI. The main thing it added was a standard set of instruments and corresponding patch numbers. So if Musical Instrument Manufacturers A and B supported GM, then both would have the acoustic piano patch mapped to Patch #1. Sequences could then be much more readily shared between people with differing synths.