This is all surprisingly similar technology - well at it's most basic anyway.
Firstly I just want to define the difference between terminal-services and virtualisation;
- Terminal services such as Citrix's older products, MS TS etc. work by having code executing on a server and the display of that code being transmitted and redisplayed on a client, the client keyboard and mouse is passed back to the code on the serving machine.
- Virtualisation is when an application or OS is ran on a server in an encapsulated and protected environment where that environment presents itself to the application or OS as being a dedicated with no obligation to any other code or system. The virtualised environment may or may not have it's display/keyboard/mouse mapped to an external machine.
I just wanted to get that out of the way so we can carry on.
Anyway, VDI and server/client virtualisation are all essentially the same - guest code runs on one or most host servers. In this case VDI and client virtualisation are very similar in that one of their main purposes is to provide a desktop environment (i.e. display, keyboard and mouse) to their client machines over one protocol or another; whereas server virtualisation rarely has this obligation, often providing CLI inputs for management and Ethernet/IP based output.
Now onto the actual products;
- XenApp is effectively a very mature terminal services platform, application code runs centrally but is displayed and managed on a client.
- XenClient is code that allows for desktop virtualisation, the guest code runs on the user's machine and also displays its output onto the same machine, this allows multiple OSs to run on one machine.
- VMWare View allows multiple iterences of desktop OSs to run on one or more servers, the output of these desktop OSs are displayed on client machines but View is tuned for very heavy reuse of existing memory pages with the aim to only manage the differences between iterences memory after the first iterence is running; i.e. the first Windows 7 user uses the normal amount of memory W7 uses but the second and subsequent users only have the differences between their session and the first session stored - think of it as deduplication of VMs.
- VMWare ThinApp is a way of bundling up a small virtualisation engine (hypervisor), a basic OS and a given application into a single executable file that is limited to only displaying the output of that bundled application. For instance if you had an application that had very specific code requirements but wanted lots of other machines running a variety of OSs/code-stacks to run your application you could build one ThinApp which run your application in a predefined code environment regardless of the base OS/code-stack.
I've left XenDesktop until the end as it's something of a hybrid product in that it can display VDI-like services, Terminal Services and run local virtualised guests.
Hopefully this has been of some help, I'm sure I've over simplified in some areas but given you question was quite vague I think I've hit the majority of areas.