The Ender 3 V2 had been running fine on OctoPrint and Cura, but the print quality and speed ceiling on stock Marlin firmware was the actual limit, not the slicer. Klipper moves the heavy step-generation math off the printer's slow 8-bit-class board and onto a Raspberry Pi, which is what unlocks higher speeds and smoother curves without changing the mechanics of the printer at all.
The board is the 4.2.2 mainboard with an STM32F103 chip, which meant flashing Klipper firmware through its 28KiB bootloader rather than the larger bootloader newer boards ship with — getting the firmware build configuration matched to the right bootloader size was the one step in the conversion where getting it wrong means a printer that will not boot.
Once Klipper was flashed and talking to the Pi over serial, the rest of the stack came along with it: Moonraker as the API layer between Klipper and the web interface, and Mainsail (with Fluidd as the alternative) replacing OctoPrint's web UI entirely. KIAUH made installing that stack on the Pi straightforward rather than hand-rolling each service.
The thing I did not want to lose in the conversion was the CR Touch automatic bed leveling and the Obico print monitoring I had working under OctoPrint. Both carried over cleanly — CR Touch integrates into Klipper's bed mesh config directly, and Obico's monitoring connects the same way it did before, just pointed at the new stack instead of OctoPrint's plugin.
Notes for next time: a firmware-and-host conversion like this is really two separate risks — getting the right Klipper build flashed to the right board, and getting the host-side stack (Moonraker, Mainsail, KIAUH) reproducible on the Pi. Treat them as separate checkpoints rather than one big leap, especially the bootloader size on the mainboard.