Problems with Differential Backup CheckpointLSN
The checkpoint_lsn of the diff and transaction log do not match so
  that doesn’t seem to be the same 


Checkpoint_lsn is the LSN of most recect checkpoint respect to given backup (the closest in time checkpoint that occured prior to given backup), so checkpoint_lsns of different backups are not related to each other.


  neither do the first and last lsn values


This depends on the type of backup.

While for all the backup types these are the first LSN and the (last LSN - 1)* contained in given backup and seem to be independent of other backups, Last_lsn and First_lsn of log backups are always "in relation":



I.e. every next log backup starts exactly where previous log backup stopped.

*
That LSN is not contained in 2 log backups, instead, given current log backup, its last_lsn is not the one contained in this backups, but it's the next lsn respect to the last lsn, contained in this log backup, that's why I wrote that the Last_LSN is Last_lsn - 1.

In other words, it is LSN that will be the starting point of the next log backup and it will be contained in that next log backup.


  My current thinking is the next log to apply after a diff is one where
  the last_lsn of the diff is contained with the first_lsn and last_lsn
  value of the log. Is this correct


Yes it's correct.