The "next-hop-self" command sets the next hop of externally learned routes to be the router that learn it. This stops you having to carry the network that you used for peering in your IGP (eg. Your address space is 1.2.3.4/24, but the link between you and the ISP comes from their space, 5.6.7.8/30. You don't want to have to carry 5.6.7.8/30 in your IGP, so you set next-hop-self on your border router and then all of you IBGP peers see the next hop for prefixes learnt from your ISP as the IP of your border router.) So, you only need to set this on your border routers. NB: This does not stop you propagating your IGP routes to external peers, it just stops you having to carry external "peering" links in your IGP. I hope this helps.
Warren.