For many years before form builder was created, there was validation toolkit. As such there should still be a whole slew of documentation and examples around it. Start by opening up the Server Validation Wizard and clicking the help button.
Spry validation isn't ever needed. But it is an attractive and dynamic way to add client side validation with all of the bells and whistles. For the sake of true validation, client validation is useless, since it can be turned off in any browser. Server Validation is the more important kind for true security and is the only one that is truly necessary.
Adding validation error messages is still pretty tedious and time consuming, which is one of the reasons why we created form builder.
Anyway, spry validation is added on a field by field basis. Server Validation is applied as a server behavior, but then each error message has to be added and configured individually.
Once validation is in place, or before, you can add the DataAssist server behavior. Again, since you are using your own forms you would not use the DataAssist wizard, but instead apply the insert or update server behaviors directly to the page.