Prima di tutto, cosa non molto importante ma il campo reciverid, in inglese ricevente, o destinatario in questo caso, non ci scrive reciver ma receiver, ti sei mangiato una e dopo la c.. era buona 
Cmq, a parte gli scherzi per l'ordinamento dovresti usare, all'interno della query, la clausola ORDER BY, questo sia per ordinare in base al valore del campo check e del campo time.
Alla prima domanda non saprei come rispondere, non ci ho mai pensato a realizzare una cosa del genere, cioè, potresti utilizzare la clausola MAX() per vedere l'ultimo messaggio ricevuto, ma vederlo per ogni mittente non saprei come fare.
Potresti provare con una semplice query di selezione a recuperare tutti gli id mittenti presenti nel database, poi per ogni id, che ad esempio memorizzi in una array potresti eseguire una query del genere:
Codice:
SELECT MAX(time) FROM messages WHERE senderid = valore_id LIMIT 1
Non saprei pero se c'è un modo più semplice per farlo.