If I were deploying a Windows Server environment, what are the differences between virtual failover, disaster recovery and high availability as well as when would you utilize them?
These are broad terms, but in the context of Windows Server they can be explained somewhat easier.
Virtual Failover - This term is generally used when describing virtual machines coupled across a server farm, such as XenServer or ESXi nodes. When a physical node fails, all of the virtual machines running in memory can be migrated to another physical node if resources permit.
Disaster Recovery - This is a very general term which outlines the procedures that are taken when an unexpected disaster occurs resulting in downtime. A disaster recovery plan, or in other words a "set of policies" is used to dictate the immediate steps to action once the disaster has been discovered. These steps may involve replacement hardware, backup solutions, backup sites, data integrity checks and so on.
High Availability - This is more of a design practice which involves configuring devices and their software in such a way that there is minimal downtime in the event of a disruption and minimal-to-no human intervention is required to fully restore operation. Such implementations include redundant links in a network, RAID configurations, and software with HA Cluster support. SQL Clusters are a good example of this, where two servers maintain identical databases and one can take over in the event another dies. This term is sometimes used interchangeably with failover because failover solutions are what typically provide high availability in the first place, but there is an appropriate time to use each one separately.