Here is how I would handle the concerns you address:
a.) I always do client side form validation
b.) I back up my client side validation with server side validation
c.) It doesn't matter if you use page A or page B to process a form, any one can place a page on their local drive and submit to your page. All my action pages check for both a certain submit button value and for the page(domain) referrer url. This ensures that only a certain page(s) in my domain are posting to my applications.
ie:
http://www.iribbit.net/i/contactme-action.cfmAs for returning errors - I either use alerts on the action page or I use server side includes on the action page for error catching. I, then, either have the link that returns the user to the form look like a link or have it as an actually form button posting back to the original form page. That page, just like the action page, use the same set of <cfparam name="form.myvariable default="myvalue"> tags. It simply doesn't matter what page does the processing, the form page still has to have all the code written into it to be prepopulated.
Another reason I seperate my actions from my forms is to make server log analysis much easier. I can isolate errors or slow request much easier. I don't have to think - "oh does this page have a form on it is it a post or get, how do I know if this page is showing an error for some other reason".
In any respect, I mentioned that each developer has his/her own conventions. ColdFusion logic, I feel, is very easy to separate form from function and display from action. I, honestly, am not versed in asp or php enough to formulate a real evidenced based comparison. It probably still wouldn't matter since a developer is still going to do what they want.

I can only advise you to try each way that might be presented to you and give each a fair shake. Then, adapt or modify it to suit your needs.
I've got more rationale if you have more questions.

BTW, the example I provided doesn't have the referring URL check in it - I don't think, - I'd have to check.