Why do you need to have 2 variables defined for the same string?
A pointer is just like the name suggests. It points to a defined memory location, in this case the string in the .data section. A pointer does "not" have a size (depends on how you look at it, the address itself is in 32-bit programs a DWORD, it does not relate to the size of data it might point).
You could just do it like this:
Code:
.data
lpText db "Pointers are fun!", 0
.code
...
push 10h
push 0
push offset lpText
push 0
call MessageBox
...
Idk if it made any sense, like Void, I don't really understand your question .