You would use clones whenever you encounter a situation where there are multiple instances of the same object and you are required to uniquely distinguish between each of the objects in automation.
The first step in setting up clones would be to adjust your match rules for the control to match all instances of the interrogated object. Below is a link that goes into detail of the steps that should be performed when interrogating an intended clone object.
The next move would be to set the use keys to true for the control that was interrogated. You would do this so that you are able to uniquely identify each of the clones through key properties. You can also assign a custom key to each of the clones as they are created using the Key property.
Below are a couple of links on enabling use keys and the methods, events, and properties, that are available for cloned controls.
Proxies are object containers that are used to reference complex data types. Often you would need to extract a proxy to drill down to a specific data type(s) that are found within a complex object.
For instance you may have an email contact in your automation that contains various properties such as email address, phone number, address, and etc. In order to make those properties accessible, you would extract a proxy of the email contact to expose those various properties. Below is a link that goes into detail about proxies and their use.