I'll expand on the i386/686 a bit, at least as far as my knowledge goes...
You have several flavors of RPM's. Most of which are precompiled binaries wrapped into a neat little package. These binaries are compiled on someone else machine against their architecture. In order for the RPM to be **most** universally compatible, it will tend to follow the lowest x86 architecture possible (that's what windoze does too). It will be able to be disseminated more widely than the ones compiled to support faster CPU's such as i686 ones. The benefit of having an i686 is optimization at the cost of less dissemination. The benefit of using i386 is that you know it's going to work on your hardware should you have a Pentium class CPU or better (or worse for the 386 crew
You also have source RPMs, but we are strictly comparing precompiled binary RPM's. These are labeled i386 and up (486, 586...). Occasionally you come across the option for all kinds of RPM optimizations, but that seems to be rare. For true optimizing, most
people will hand roll their own packages (compile). That way it's truly tailored to their setup, speed is actually optimized, and it works well.