As far as I know packages which end with i386 are optimized to run on at-least Intel 80*386 CPU, which means that that particular binary will run well on any box which has a processor higher that i386.
Similarly packages with i586 suffix are optimized for "Pentium" class processors (starting from Pentium 1).
More info on that here http://en.wikipedia.org/wiki/I586
i686 are also Pentium class processors, however they corresponds to 6th generation Intel x86 Microprossor.
More on that here http://en.wikipedia.org/wiki/I686
Packages optimized for these archs means that they were compiled on a cpu with the corresponding cpu, to fully utilize the instruction set available for each generation of CPU.
To the best of my knowledge, this is what is meant by i386,i586 etc packages.