1. Capabilities are, basically, sort of data storage. (in RAM/HDD, anyway)
So you can use it to store your Capabilities.
2. To use the data, one can use Event System. There are several events like LivingAttackEvent, which will fit your needs.
- How to use the data in the events?
1) Get the Caps from the ItemStack
2) Apply effects for the caps
3. Most event methods of Item class has ItemStack as parameter. So you can also use Caps there, if you have central Item class to control all of the guns.