1) Yes, the unique value validation was introduced to offer a way to check for duplicate values and should be used in place of creating the recordset and using numeric validation.
2) to allow blank values, you will need to change the server variable code that is generated. when you select the form element to be used for the unique validation, the server variable code that is generated will look like:
((isset($_POST["textfield"]))?$_POST["textfield"]:"")
you can edit that slightly to check for a blank value, if it is blank pass a fictitious value that will never exist like "123456789":
(((isset($_POST["textfield"]) && $_POST["textfield"] != ""))?$_POST["textfield"]:"123456789")