i386 is anything since the old 386. Mean it will be supported by any processor made since the intel 386.
i586 is the "next generation", mean since the first Pentium processor. Again, any processor made past this will support this, but 486 or 386 will not. The difference is some "enhanced" cpu instructions code I believe... new "word" and "sentence" that old processor could not understand. Of course, as AMD use intel CPU code as well, this will work on an AMD processor as well.
i686 is the last generation, what we use now, so it's Pentium 4 and new AMD processor (is P3 in that too? I'm not quite sure). Of course, older processors will not support this code.
All these architecture is often known as "x86" (intel X86).
2- Well... for what architecture is it then? If it's not something really exotic like SPARC, ALPHA or PPC (is FreeBSD supporting all these stuff anyways? I doubt so) and if you have the latest P4, then you could most probably use this