windsor_43 Hi Windsor, forgive my lengthy response, but hopefully it's helpful. An anchor is needed each time money is added to or taken from the Stellar network. You can think of an anchor as an onramp or offramp, since an anchor is what bridges the traditional financial system to the Stellar network.
The main role of an anchor is to accept deposits from users and issue digital credits on the Stellar network. When the anchor sends or trades those credits to another party, they are effectively on the hook for redeeming that credit with actual fiat when requested to do so by the party that ends up holding it. For that reason, the anchor should back up assets issued on Stellar with actual fiat. Also worth noting is that anchors don't necessarily have to be the ones that do the exchange between fiat/fiat or fiat/XLM. They certainly can, but specialized market makers are encouraged to play that role as well.
Ideally, your use case would work as follows:
1) User deposits GBP through mobile app
2) You issue digital credits for GBP on Stellar and initiate a transaction to recipient
3) Money is routed through the best offer currently available in the GBP/XLM orderbook and then the XLM/UGX orderbook
4) UGX credits are sent to the receive-side anchor, which then credits the recipient with fiat UGX
Now, your organization as an anchor can do the GBP/XLM conversion itself. In that case, you could simply buy XLM on the open market, and then send XLM to the recipient anchor instead of issuing GBP credits. However, as you correctly identified, at the moment there isn't an anchor for every country/currency, including Uganda. Theoretically you could also be the anchor on the receive side as well, selling XLM for UGX, but there would have to be enough liquidity in that market. Otherwise, what you can do is set up a bank account in Uganda and bulk wire yourself UGX (essentially pre-funding your account) and do it that way.
Hopefully that answers the question, please let me know if not.