「善意」とは、ある事実を「知らない」という意味で、
「悪意」とは、ある事実を「知っている」という意味です。
例えば、Aが土地の売主、Bが土地の買主とします。
そして、Aが第三者Cから詐欺を受けていて、Bに土地を売ってしまったとします。
その「Aが詐欺を受けていた事実」をBが知らない場合をBは「善意」と言います。
一方、「Aが詐欺を受けていた事実」をBが知っていた場合、Bは「悪意」と言います。
「過失」とは、「不注意」を意味し、
「有過失」は、「注意していなかった」
「無過失」は「注意していた」
という意味になります。
つまり、
「善意有過失」とは「注意していていなかった」ことが原因で「知らなかった」
言い換えると、「注意していれば知ることができた」
「善意無過失」とは「注意していた」にもかかわらず、「知らなかった(分からなかった)」
という意味です。
この点は、宅建試験では、必ず理解していないといけない部分です。