Assembly version, a.k.a. product version is used by CLR when loading dependent assemblies.  As in .NET 1.X, you can see/change the ProductVersion in assembly manifest by using [assembly:AssemblyVersion(“”)] attribute.  In VS2005, there is now UI for the ProductVersion -- Project Properties->Application Tab->Assembly Information.  Programmatically, you can get this version by calling Application.ProductVersion property.

File version existed in VS2003, although some people didn’t know about it because it wasn’t automatically added to AssemblyInfo.cs.  AssemblyFileVersion attribute is what the shown in Version tab in Windows Explorer when you look at assembly properties. If you want compatibility, don't change the AssemblyVersion, but use the AssemblyFileVersion to track your builds and versions;  only increment the AssemblyVersion when you are breaking compatibility and want to force a recompile and
allow side-by-side execution.  Note: if you exclude the AssemblyFileVersion, then the value is set to the same as AssemblyVersion.  Check out FileVersionInfo class for more info.

Finally, with ClickOnce, we now have the deployment (a.k.a. publish version).  This is what’s used to figure out if the client installation is up-to-date or a newer version is available.  Programmatically, you can get this version by calling System.Deplolyment.ApplicationDeployment.CurrentDeployment.CurrentVersion property (make sure to check that the deployment was done via ClickOnce by calling System.Deployment.ApplicationDeployment.IsNetworkDeployed).

It usually makes sense to keep ProductVersion and DeploymentVersion in sync, but you don't have to.  

If the application is deployed via ClickOnce, it is  recommended to display the deployment version.
For more information, check out the MSDN Webcast: Using Visual Studio's ClickOnce Technology to Deploy a Smart Client Application (Level 200)