Over the transom...
Each of those is a deep topic, but....
CP weighting allows you to apportion the influence of more than one bone to a CP, rather than having it rigidly attached to just one bone. This is useful for the stretches and shrinks that surfaces between bones do, such as at the elbow or knee.
Fan bones are another way of creating that in-between behavior, but slightly different outcomes than CP weighting.
At the Sept 26, 2020 Live Answer Time I showed several comparisons of fan-boning and CP weighting. We talked abut rigging and CP weighting quite a bit last year at LAT. Several of those might be worth watching. my tutorials page also has several entries about CP weighting and fan-boning
Smart skin lets you relate any change of something with the rotation of a bone. Usually this is about CP motion, typically when the above two tactics can't produce a desired joint deformation. See this post A simple example of smart skin?
In addition to the above, the rarely used Bone Falloffs allow yet another way to weight CPs. example Two bone spring
A:M Poses let you collect any set of keyframed changes to almost any thing into one control slider or an ON/OFF switch. A slider that moves the CPs of a mouth from "eee" to "ooo" shapes would be a classic Pose slider case but there are infinite others. ON/OFF poses can be used as "drop on poses. Do a search on "Pose" on my tutorials page and you will find many entries in which a Pose has been the solution for many different problems.
Polygon programs need "weight painting" because they have thousands x more vertices to manage than we have CPS. It is not humanly possible to manually weight all the vertices in a dense polygon model but a good A:M model has a light enough mesh that it is possible.
For unhappily dense A:M models the Transfer_AW plugin can make it possible to weight a light mesh and approximate that result on a dense one. Rigged in 60 Seconds?