A great explanation can be found in the eth2book:
https://eth2book.info/capella/part2/consensus/casper_ffg/#justification-and-finalisation
The idea is that the justification and the finalization represent the two rounds in the block validation process.
Why do we need a two-round process?
Round 1: I broadcast my view of the current epoch's checkpoint to the rest of the network, and I hear from the rest of the network what their view is. If a supermajority tells me that they also support the same view, that allows me to justify it. Justification is local to my network view. But I don't yet know that the rest of the network has come to the same conclusion.
Every node (validator) has its own view of the state based on many different obstacles like network conditions, bugs, performance issues, etc. So in case I use a problematic node for JSON_RPC provider it may tell me that a consensus is achieved on this epoch, but it only shows its own point of view which may be wrong.
That's why we need a second round.
Round 2: I broadcast the fact that I've heard from a supermajority of validators that they support the given state (in other words I share the justification) and I hear from the rest of the network whether they believe that a supermajority of validators supports X (that is, that they have justified the state). If I hear that a supermajority of validators agree with me that this state is justified, then I will finalize that state.
Now I as validator (node) know that the other validators have also received valid confirmations and they've updated their state the same way I've made it so when you ask my JSON_RPC about this block I can times more confidently say that this state is finalized.
Not only I've accepted the state with the received attestations from the other validators, but I know that the other validators also accepted the state based on the attestations they received from the other validators.
I can share more information about the risks of reorganization for justified and finalized blocks and why they are like that, but you can find this information in the eth2book (link above) so better keep the answer shorter.