Basically, it solves the problem of finding a setting of variables that is compatible with some set of constraints. This is NP-hard but Z3 is in practice very fast nonetheless.
A case study/glowing review from a programmer at Microsoft is here:
https://medium.com/@ahelwer/checking-firewall-equivalence-wi...