When looking at the difference between sample time and latency in Jmeter, I have always used the following definitions:
Sample Time : Time from invoking the request to the last byte of the response coming back
Latency: Time from invoking the request to the first part (packet) of the response returning.
To confirm the above defintion I used the network sniffer wireshark while executing a simple Jmeter script for a single request to a web page. Using the network sniffer I can identify when Jmeter makes the first request for the webpage which typically includes opening a TCP/IP connection. I can then see when the first packet of the response arrive at the workstation and the last packet of the response arrives at the workstation. This allows me to build a driagram below to confirm the definitions above plus/minus a few milliseconds.
However, what happens when you have a page that redirect to another page. I noticed this when I had a script that included a redirect and the latency for the page was very small. I got out wireshark again and discovered that although the sample time captured the complete page time the latency only included the time to receive the 302 response back that the workstation. See below: