A cast wouldn’t work if the variable is null/unset.
So the IsValid checks that it is not null before trying to execute it. (If execution is tried on null variable you’ll get ‘accessed none’ errors)
I see a lot of these failed casts / accessed none when something is being called at the very beginning of ‘Begin Play’ (where some systems still need to take a few frames to gather/set references)
If something is set and will remain set It’s probably ok not to do IsValid checks, but if your logic involves clearing/changing references it’s a safety measure.