No problem, thats what this forum is for :)
If we can automatically tell if an application is vulnerable to specific vulnerabilities then we write active or passive scan rules to detect those issues.
For example we have rules to detect reflected, persistent and DOM XSS's.
Fuzzing is a manual process. Its there for vulnerabilities that the automated tests cant (or dont) find.
The fuzzer makes it easy to attack specific fields (or any parts of a request) with a wide range of built in attack vectors, and provides lots of ways to manipulate those attack vectors in order to target the specific application you are testing.
But its still manual - ZAP will perform the attacks but you need to determine if the attacks were successful.
The fuzzer provides as much information as it can, including if the attack vector was reflected in the response, but in the end you have to decide if an application is vulnerable or not.
Its worth noting that all automated tools (including the ZAP active and passive scanners) can report false positives, so you should always manually double check any results they report.
Every active scan rule works differently, as they are trying to find different vulnerabilities.
We try to document how they work in the help pages, but some are better documented than others ;)
To see exactly how they work you'll need to look at the code ;)
The Hacking ZAP series can help as well: https://github.com/zaproxy/zaproxy/wiki/Development
Cheers,
Simon