The [] just means that the operand is the content of a memory address. The two other operand options are an immediate or a register. One exception is LEA (load effective address): LEA AX,[SI] would load the effective address into AX (not including the DS part). In this case AX ends up with the value 0111 instead of the content of [13531]. The Intel cpu's don't have a indirect addressing mode, the equivalent of a [[13531]].
Back in the days of real 8088's and when people cared about instruction times, LEA was faster than add, but it can only be used with registers BP, BX, SI, or DI as operands, or with BP|BX + SI|DI.
LEA BX,1234[BX] (or LEA BX,[BX+1234]) is the same as ADD BX,1234, but it executes faster.
Also the destination register can be diferent, such as LEA AX, 1234[BX+SI] => AX = (1234 + BX + SI).
In 32 bit mode, there is an optional "sib" byte appended to the opcode, allowing for more addressing modes, which allows indexing via any register, and scaling (1x -> 8x) on the second index:
MOV ECX,12345678[EAX+EBX*4]
LEA EAX,[EAX*8] ; multiply by 8 or shift left 3 ; probably not faster than SHL EAX,3
For other examples of "clever" coding, look at the output from microsoft compilers using the -Fa option to produce assembly code.