You have a bit of contradiction in how you want to order your items:
select all items ordered by date (DESC), keeping all items that share the same parent together (and in this case, order by the max date of the collection of items).
Does that mean first by parent and then, within a given parent, by date or do you want it first by date and then by parent which means you probably will not get items with the same parent listed together. I assumed the former:
Select I.id, I.parent_id, I.name, I.date
From item As I
Left Join item As P
On P.id = I.parent_id
Outer Apply (
Select Max(I2.date) As [Date]
From item As I2
Where I2.Id = I.parent_id
) As MaxDate
Order By I.parent_Id, MaxDate.[Date] Desc, I.Date Desc
If you did not care to return any data from the parent of a given item, then you can eliminate the left join:
Select I.id, I.parent_id, I.name, I.date
From item As I
Outer Apply (
Select Max(I2.date) As [Date]
From item As I2
Where I2.Id = I.parent_id
) As MaxDate
Order By I.parent_Id, MaxDate.[Date] Desc, I.Date Desc