i386 refers to the type of *cpu*, or *cpu* 's Architecture (architecture).
Now the CPU is generally used "core 2 duo" or "athlon","xeon","opteron" the kind of cool name to call.
When Linux was born, the CPU was used as an important component, usually called by the model number.
i386 I stands for Intel. Intel first produced the 4004 CPU series, and 386 (80386) was the first 32-bit CPU.
Linux was initially developed as a 386 architecture-compliant POSIX kernel. After the CPU performance is higher, but has been compatible with the "386" architecture,
So the various programs running on Linux, as long as they are compiled on "386", can be run on most PCs.
However, "386" was born in 1985 and is now very old.
Many Linux distributions are now for CPU after "pentium".
The package containing "i586" in the name is for the CPU of the "pentium" architecture.
The "i686" that you see in Linux with the uname command refers to the architecture after the "pentium pro".
We might think that on machines with "i586" or "i686" architecture CPUs, binary applications compiled for "i586" or "i686" are better than binary applications that are compatible with "386" architectures.
However, in real-world use, binary applications compiled with "i586" or "i686" are not found to have a significant performance boost on "i586" or "i686" CPU-based machines.
Therefore, for the sake of generality, only when installing Linux, the same CPU architecture is selected, and the various programs running on the Linux kernel can directly use the package compiled in the "i386" architecture.
Now many Linux distributions in the package is doing this, it is most important to work properly.