Let me give you a brief explanation.
[] brackets mean something like "do not work with the content, but with the address".
When used labelled DATA, you can omit them (it depends on your assembler's syntax, but in MASM it definitely works like that). Why? There is no way of working with data in memory directly; instead, you just work with a data somewhere in memory (on some address). So no disambiguity can happen, you always work with data on address.
When you use them with registers, it's a quite different story:
MOV EAX, 10
simply loads 10 (0x0000000A) in EAX register. You work directly with the register. But:
MOV EAX, 666
MOV BYTE PTR [EAX], 77
loads 77 into memory adress 666. The BYTE PTR directive is necessary, because assembler doesn't know if it should use 1, 2, 4 etc. bytes. The [EAX] says "do not work with EAX, instead, work with ADDRESS (memory location) contained in EAX.
If you want to find out a difference between [VAR], VAR and OFFSET VAR, try to step-by-step this code:
.DATA
VAR DWORD 77
.CODE
MOV EAX, VAR
MOV EBX, OFFSET VAR
MOV ECX, [VAR]
MOV EDX, OFFSET [VAR]
You will clearly see the difference.