Another solution:
select t.id as tag_id, t.label as tag, max(date) as date from Tags t
join EntryTags et on t.id=et.tag_id
join Entries e on e.id=et.entry_id
group by t.label,t.id
order by date desc,tag
which returns:
tag_id tag date
------ ----- -----
1 Apple jan 3
3 Car jan 3
2 Boat jan 2
(In your data, Apple's most recent entry is January 3, not January 2.)
Joins in Postgres are implicity "inner joins". If you may have tags without entries, you will want to change the joins to left joins.