Should I use the AMD64 or i386 version?
Im a bit ashamed to admidt I never really got a solid grasp of the differences between AMD64 and I386. I know is has to do with different instruction-sets availiable on different CPUs and such, but how do I find out which one is suitable to my CPU? Also, if it supports both (if that is possible) - is one or the other better performance-wise?
Every consumer processor that I know of that can support the AMD64 instruction set can also support i386. I'm sure you would find a few performance differences, but it's really helpful for 4GB+ of ram because otherwise you can't use all of it properly. I would recommend i386 unless you have a very specific need for amd64, as far as I know the packages aren't even as stable. Hopefully somebody who uses pfSense in that mode can help you, I'm only speaking from a OS perspective, I lack the amount of knowledge of pfSense yet.
One way of looking at it is: i386 is the instruction set of the old Intel 80386 and various extensions. AMD64 is the i386 instruction set with extensions for additional registers, 64 bit registers, 64 bit virtual addresses etc.
Most recent "i386" CPUs also understand the AMD64 instructions so are capable of running either i386 kernels OR AMD64 kernels.
For applications like pfSense I suspect in most cases there is little or no gain in using AMD64 kernel over i386. One exception though, would be "heavy duty" firewalls needing to keep large numbers of connection states and thats because the AMD64 instruction set allows the kernel address space to grow much much larger than the size allowed by the i386 kernel.