Deployment diagrams are a kind of architectural model that show the static structure of the planned target environment. They show how the different components in a distributed system are deployed over the available hardware platforms.
Deployment diagrams illustrate the relationships between the software and hardware components in the system and the physical distribution of the system elements. They are usually created during the implementation of the system and set out the physical arrangement of the processor elements, the software that are installed on each processor, and the components and other elements that the software implements. As well as processors, nodes in a deployment diagram can show hardware devices such as sensors, and printers, as well as other devices that support the runtime environment of a system.
Deployment diagrams are probably most useful when you are designing an embedded system based on hardware that is controlled by external stimuli; for example, a display that is controlled by temperature change. You may also use them to document client/server systems that typically distinguish between the user interface and the persistent data of a system and distributed systems that have multiple servers and can host multiple versions of software components.
The notation used in deployment diagrams represents nodes (generally hardware or VMs) as 3-D boxes that can contain installed software. You can either use node types to represent abstract deployments or specific node instances.
In practice, deployment diagrams are not universally used. They are, in my opinion, a rather clumsy way to describe an installation and graphical presentation of this information does not really gain much.
There are several tutorials on the web that show instances of deployment diagrams and discuss their use.
Agile modelling tutorial
Sparxsystems tutorial
IBM tutorial