Currently, the Field_collection module implements item weights using deltas, which to my understanding, is incorrect.
Part of this problem stems from the fact that field_collection items are loaded from the
field_collection_item table instead of the field that it references.
Deltas are supposed to reference nothing more than the fact that more than one field instance exists.
For instance: I have a Profile2 field-collection called "Education". The source entity allows unlimited data in this field. The collection-item entity has several fields attached to it.
I noticed the .install doesn't provide a "weight" field for the field_collection_item. It also seems like this module removes all field-collection values for the present entity and re-inserts them using their "delta" as the order.
The reason this problem starts to crop up in views, is that the "delta" is a "field", not a pseudo-field like weights. So, when the view processes, "delta" is selected as data, and Views tries to use the field alias to handle sorting. The net effect is that Views selects delta information when it shouldn't be, and the items pulled from the DB don't match our expected results.