We have created a form that will be used by HR users only.
For second and third question,
You can create validation jars to validate the attribute as you needed.
Please refer this document to know more on the validation framework.
I think there is no way to control the active/inactive user list.
For the validation of end date - you may want to use a Validation condition in dynamic attribute. You may put a Failure Message which will show up when the Validation condition fails.
For updating date automatically, you may want to use update rules with which you can create an update user task which will eventually go and update the end date for the user.