Olá Softfocus,
Não sei se compreendi sua dúvida por completo, mas em relação ao float, quando atribuímos o float a um elemento, ele se posiciona imediatamente e procura se posicionar de acordo com a ordem dos elementos que aparecem na página e ao espaço disponível para ele.
O local que os elementos vão aparecer tem haver com o espaço disponível para eles ocuparem.
E a ordem que eles vão aparecer tem haver com a ordem em que eles aparecem na página, ou seja, se temos os elementos assim:
|elem1|
|elem2|
|elem3|
|elem4|
E você aplica float:left
nos elementos 1 e 3 , ele primeiro posiciona o elemento 1 à esquerda, em seguida ele posiciona o elemento 3 no próximo espaço que não tem um elemento com float, a tentando sempre colocá-lo a esquerda. Como neste caso o |elem1| já está com float à esquerda, ele tenta colocar no próximo local mais a esquerda possível que é ao lado do |elem1|.
|elem1| |elem3|
|elem2|
|elem4|
Ao aplicar o float:right
, nos elem 2 e 4, você está dizendo, coloque eles flutuando, no espaço mais a direita disponivél. Como o elem 2 está antes do 4 ele é posicionado primeiro no espaço mais a direita possível:
|elem1| |elem3| |elem2||
|elem4|
Ai ao aplicarmos o float:right
no elem 4 , ele busca o espaço mais a direita disponível que não esteja ocupado por elemento float, neste caso, ao lado do elem2.
|elem1| |elem3| |elem4| |elem2|
Então o posicionamento do float tem haver com a ordem e o espaço disponível dos elementos.
Levar em consideração "linhas" diferentes pra left e right pode lhe induzir ao erro em alguns casos.
Espero que você tenha entendido, e se não foi esta sua dúvida , comente que posso tentar resolvê-la de novo !