Automatic Gain Control is typically used to describe a receiver gain adjust function, while Output Power Control is used to describe similar functions in the transmitter to maintain a constant output power. AGC's can be more complicated since they typically have to adjust over a much broader dynamic range (making up for signals that can be near or far as well as handling interference and multiple channels). The loop bandwidth for any control loop is a careful consideration, and with regards to an AGC we are typically looking for a fast loop if we want to track rapid variations in received signal level (such as a mobile radio application) but balancing this with not tracking so fast such as to remove amplitude as part of the information modulation. A reasonable loop BW is typically a small fraction of the symbol rate $R$, such as in the range of $R/100$ to $R/20$. Please also see this additional post which details AGC implementation further.
Both AGC and Output Power Control result in control loop implementations which proceeds as follows:
The power level is measured with a power detector (which converts RF power in a given bandwidth to a voltage or other measure of magnitude such as digital counts). "True-RMS" power detectors are great choices as they provide the actual rms power level independent of modulation type. Even simpler are diode detectors and log-amps for high dynamic range, but they will have a sensitivity to the type of modulation that is used.
The detected level is subtracted from a target or desired level, creating a difference as the "error signal". This can be done in the analog domain with an op-amp, or digitally after converting the analog detected level to digital using a small low-cost SPI ADC, or optionally measuring the level of a digital signal directly (both approaches are done often in the same receiver- an analog power detector can be used to level the signal prior to A/D conversion, and then a digital level detector can be used as well after subsequent filtering).
If the error signal is analog it can be integrated (using a cap from output to input with an op-amp for example), or if the error signal is digital it can be accumulated, in either case as a simple loop filter for a first order loop implementation. (Higher order loops are also done depending on application).
The output of the loop filter is scaled (which sets the loop gain and ultimately the loop bandwidth), forming a control voltage to a voltage variable amplifier or voltage variable attenuator if gain adjust is done in the analog (if the loop is implemented digitally with analog gain control, the same control voltage can be created using a small low-cost SPI DAC). Gain adjust can also be done digitally as a gain scaling. Where we adjust the gain depends on the receiver architecture and the gain balancing we desire in the different stages (which often results in a careful design trade of sensitivity and dynamic range).
The gain control functions can and are done in the digital receiver chain as well, and often there are multiple stages of gain control as the signal progresses through various stages of filtering. It is not uncommon to do front-end gain control with simple gain switching, and then do fine gain control completely digitally as diagrammed below:
The implementation and considerations for the AGC can get quite complicated and involve consideration of the entire receiver architecture, what is done digitally, filtering provided and interference expected. As an example the diagram below shows the otuput power vs input power level for the mixed signal implementation above with a 3 gain stage front-end amplifier (bypass, low-gain, high-gain).
What would occur in this case with no signal present, the AGC will have commanded the amplifier to be at the High Gain level (if the signal at the ADC input remains below "Min Signal", the AGC will keep incrementing the amplifier gain higher through its three states.
Then with signal present and increasing in power level, eventually the Max Signal condition will be reached (given by gain control $<T_L$ in the previous grapic), causing the state machine to command the amplifier gain one step lower (go from High Gain to Low Gain). If Max Signal is still exceeded (meaning the gain control once settled is still $<T_L$ then the amplifier gain will again be commanded to go one step lower (from Low Gain to Bypass). As the input signal level goes lower, the opposite occurs.
Meanwhile for each of these conditions, the remaining all-digital AGC will take-care of the fine-tune leveling of the signal. This can be done when the ADC has excess dynamic range beyond what is needed for signal and interference rejection.
Output Power Control is often much simpler, typically to compensate for temperature and unit to unit variation of gain in the electronics when a precise output power level is needed, or to adjust the output power with precision. Below is a diagram of a simple mixed signal Output Power Control implementation:
How do I know this? I've designed radios for cellular and military customers and teach courses on DSP and Python related to wireless comm through dsprelated.com and the ieee with new courses running soon! Practical AGC implementation and considerations are detailed in the "DSP for Software Radio" course specifically.