Hello Nick,
The option '-keep_every_nth 3' that is part of LASlib and therefore can be used as an on-the-fly read filter to any LAStools simply keeps every nth point from the file. Hence it will drop the 1st and the 2nd point of the file but keep the 3rd. Then it will drop the 4th and the 5th point but keep the 6th. That means which points are dropped solely depends on their storage position in the file and not on any of their attributes.
The option '-thin_with_grid 0.5' is also part of LASlib and therefore can be also be used as an on-the-fly read filter to any LAStools. It simply keeps the *first* point that falls into a the cell of a uniform grid of the specified cells size. Which point is kept *per cell* again depends on the storage position of the point in the file. But for each cell that is covered by the point cloud at least one point is kept. Which point that is is solely decided by first appearance in sequential read order.
The tool lasthin offers much more control about which points are thinned out. You can keep the most '-central' point per cell or a '-random' point per cell. You can keep the '-highest' or '-lowest' or the point that is closed to a certain elevation '-percentile 30' or '-percentile 90' as well as a few other option as documented in the README file:
Regards,
Martin @rapidlasso