maxdate not bringing back single line
You didn't supply any test data to validate my results against and perhaps I'm misunderstanding exactly what you are trying to achieve, but it seems this would give you the correct answer.

Declare @T table 
(
[pupil id] int,
[event date] date,
[header note] varchar(50),
[module id] int,
[event id] int
)

insert into @T values(1,'2010-01-01','note1',22,1)
insert into @T values(1,'2016-01-01','latest note',22,1)

insert into @T values(2,'2013-01-01','note1',22,1)
insert into @T values(2,'2015-01-01','latest note',22,1)

SELECT [Pupil ID]
    ,[Event Date]
    ,[Header Note]
    ,[Module ID]
    ,[Event ID] AS ID
FROM @T EV
WHERE [Module ID] = 22
    AND [Event Date] = (
        SELECT MAX([Event Date])
        FROM @t
        WHERE [Pupil ID] = EV.[Pupil ID]
            AND [Module ID] = EV.[Module ID]
        )