I got 8 columns in my List(calendar reservation).
I want to have one column(Approval: YES/NO) only visible to a user("testuser").
How can we use column validation *expressions* to archive this.
You could create a new list with a lookup to your calendar reservation list, and an extra column called "Approval." You could then set the permissions on the second list to only allow administrators to access it.
you can then use custom views to filter items based on approval settings (using connected web parts, and, say a Query String filter).
Column "validation" will not allow you to do this.
Also, out of the box, column level permissions are not available. You would need custom code to do that, or third party tools (like the sharepoint permissions extension). This article explains this in more detail (including potentially why this is not OOTB (performance issues).
You have a few options to archive information. You can use information policy management to automatically move data based on expiration. If you need something more complex, you could use Sharepoint workflows to fire and copy/move list items to a seperate archived list. Of course, you could also use custom code (for example a SSIS package with the Sharepoint connector) to archive information as well.