Anxiled: The link you gave in another thread with the solving strategies answers my questions. From what the programmers are discussing in the forum on that site, it is clear that the programs to produce unique puzzles do in fact add numbers one by one and try to solve it after each one. I guess if your solving algorithm is fast at determining whether the solution is unique, this is not a problem.
Also, apparently there are algorithms that imitate a human trying to solve a puzzle. These are applied once a unique puzzle is already generated, and give a score to each move depending on how easy it is. This allows an approximate difficulty level to be assigned automatically, though the only true test is to have people actually try to solve it.