From what I've read (books and articles, not forums) the answer is basically all of the above and more and it depends on the species and their environment or their niche in the environment. Overall, fins provide some combination of propulsion, stability and maneuverability, sensory, defense (catfish, for example), display, hunting (lionfish, for example) function-- and sometimes other, even more specialized functions. Generally, but not a rule, slower moving fish and/or slower moving water and/or less open environment (lot of obstacles to navigate, whether rocks, vegetation, etc.) tends to mean longer fin extensions than fast moving fish, fast moving water, etc.

