Difference between hard decision and soft decision in error correction codes
The hard decision is what comes out after the error correction. The error correction algorithm will use the soft decision.

A hard decision is a bit. It's 0 or 1 (or 00/01/10/11 etc if QPSK, etc). End of story - it's what you put in your output stream to be interpreted as "real" data.

A soft decision might be represented as a float, and might be something like 0.05 (obviously 0), 0.92226 (very very likely 1), or 0.50001 (good luck without ECC!).