Citrix has a Virtualization environment, which can virtualize applications(Xenapp) and Desktops(XenDesktop).
In the Citrix virtualization solution all applications run on the server and the endpoints view the window for this application running on the server. Think about this as streaming live video from the Citrix Server (where the application runs) to the endpoint (where the user "views" the running application through this streaming video concept.
The user is also allowed to interact with the application. For example, using our concept of streaming video, clicking on a specific portion of this streaming video causes the Citrix Endpoint Client to send the click to the server (where the application is running). The client sends the X and Y location of the click. When the server receives the click coordinates, it generates a click within the application on that X and Y coordinate. This will invoke the appropriate action on the server and the user will instantly see the change because constantly streaming the video content of this application.
The same happens for keyboard input as well. When the user presses a key on the keyboard, the key scan code is send to the server. The server presses that key in the running application which shows up in the server and in turn is displayed to the users on the endpoint.
In the Citrix virtualization environment the applications/Desktops are streamed/accessed from the a centralized server.
The centralized server is easy to maintain, apply patches, efficiently use hardware etc.