1. You can use to do simple arithmetic calculations:
; int f( int x ) { return 5 * x; }
f:
lea eax,[rdi+rdi*4]
ret
2. You can use to precalculate a RIP relative address (x86-64):
lea rax,[rel var] ; You can get rid of 'rel' here if rip relative addressing is default.
3. You can get the address of an element in an array:
; Supose RCX is the index of an array of ints:
lea rsi,[array+rcx*4] ; rsi now points to array[rcx]