Object, mesh, material, material slot, face, material assignment: How do they work all together? I've had a hard time to figure out why I couldn't set a different material for a given face on a mesh used by two objects (duplicate by AltD).

As soon as I was assigning a material to a face on one object, the face was also changed on the other object, in spite the material was 'object-linked'.

  

I initially set the material slots exactly the same for the two objects, including materials used by both objects. What I realized (and the documentation doesn't help) is that one doesn't assign a material to a face, one rather assign the material slot. This slight difference has indeed a lot of consequences.

The solution was to set different materials to the same slot in each object and not changing the material-face assignment.



Slots have a taste of C pointers for the mass... whatever, this leaves me with more questions:


Is that correct the slots are the actual entities which have the 'storage location' attribute and are stored either at mesh ('data') level or at 'object' level?
Is that correct slots (not materials) are assigned to faces, and in the case of object duplicates sharing the same mesh, the face-slot assignment done with the 'Assign' button is shared between duplicates?
Is it true that a face is assigned by reference to the absolute position of a slot in the list? The evidence is using the up/down arrow of the slot list in the Material tab, to change the order materials appear, actually changes which material is assigned to a face .


That's the general idea, do I miss an important point regarding the use of the material slots? Any reference to good documentation to go further appreciated, especially a description of the model.
Questions


Q1. Slots can be stored at Object or Mesh level to suit your needs.
Q2. Slots color faces. Slots at the Mesh Data level can be shared. 
Q3. I do not believe your statement is true in all cases. I reordered slots and did not see same result as stated in your question.
Your probably know this. You can switch to shared data by choosing the existing data item.  You can stop sharing by clicking on the number which is greater than 1 in the mesh data panel, seen in the image below.  The image above shows Duplicate and Duplicate Linked.  The User Preferences can also fine tune these settings.  A Blender Material contains a sequence of slots which can be assigned to faces.