To perform a payment with RGB multiple software need to interact with each other. In particular, both parties involved in the payment need to have:
An RGB node, that is used to interact with all the RGB related libraries and perform all the RGB specific operations (e.g. create consignments, validate consignments, register contracts etc)
A wallet controller, that controls the private keys, signs and broadcast the Bitcoin transactions containing the RGB commitment and manages the bitcoin balance.
A blockchain indexer, generally an Electrum server, that provides information about the confirmation status of transactions containing the commitment to RGB state transitions relevant to the user. Wallets can either rely on a local indexer or a remote one.
A User Interface to interact with the wallet user.
The diagram below shows how these different components interact with each other when a payment is either sent or received.