Can someone explain to a beginner (who has previously attempted the Plutus Pioneers program but dropped out halfway through) what the differences are between all these different ways of programming Plutus core; and which one(s) should I learn?
Plutus Light: https://github.com/openengineer/Plutus-Light
At quick glance, the other 2.5 tools you list (plutarch-plutus and plutus-light) are nascent projects aimed at creating domain specific languages that compile to plutus core.
Plutus is IOG’s Haskell framework for writing validator scripts. It uses Haskell’s metaprogramming features to compile your on-chain logic, written in Haskell, into Plutus core. This approach allows both on- and off-chain code to reside in the same source.
Pluto is a low-level language that compiles to plutus-core. It can only be used for on-chain logic. The reference compiler of Pluto is written in Haskell. I think Pluto is intended as an intermediate representation for high-level languages.
Plutarch is an alternative to IOG’s Plutus, and is essentially a Haskell library, so you can still use Plutus where necessary. Plutarch allows compiling your programs into more compact plutus-core scripts (resulting in lower fees).
For serious work I recommend learning Plutus (and optionally using Plutarch when script sizes become an issue). Pluto is too low level to be practical. We (I am the creator) are still in the process of testing Helios so I don’t yet recommend you use that (unless you want to help us debug the compiler )