A router always decrements TTL when it forwards a packet. It's part of the fundamentals of IP, and it happens when the router receives a packet on an interface and decides to send it out of a (usually different) interface.
In your example, consider a packet (perhaps ping) from R2 to R6, there are two networks you could view the packet on, left and right. The right one will see a packet with a lower TTL, because it was changed by R3.
In your example about a loopback interface, the question is whether it is being forwarded. The algorithm is:
- receive packet
- check integrity, discard if no good
- is it for me (any of my IP addresses?)
- if yes, process it appropriately
- if no, decrement TTL
- if TTL is zero, discard it
- if not, see if can forward to a next hop
If you were, for example, doing ping from R2 with source address from lo0, and next-hop R3, then no decrement happens because the packet is not being forwarded, it is being originated, on R2.
The only confusing case is a packet through a tunnel: the outer, transport, packet always has TTL decremented, but the inner, payload, packet usually does not -- it's just payload. Because this is a tricky situation which can make loops, some systems will adjust the inner payload packet too.