As for the differences between undionly.kpxe and ipxe.kpxe. The difference is that undionly,kpxe is smaller and is only has a shim between the iPXE kernel and the network adapter. It relies on some firmware on the network adapter to provide basis undi network services. As long as the network card firmware is well behaved then everything works great in this model. The ipxe.kpxe contains the majority of known or common network drivers right in the kernel. This iPXE kernel is bigger for sure but also include very well behaved network drivers.
Just a comparison between the two kernels.
undionly.kpxe is about 93KB in size
ipxe.kpxe is about 343KB in size.
These days with multi GB workstations this is really a trivial matter, but smaller kernels make faster boots. But in reality find the iPXE kernel that works best for your environment and stick with it.