No, it's not meaningless. You both save a copy operation when creating the buffer, and don't have to (temporarily)duplicate host-side data. The reason changes aren't reflected immediately is probably because you're using the GPU, and it is both allowed to cache the region of memory and possibly also keep variables in registers during computation.
If you had used a CPU device, with cache coherency, only the last of those issues would have been a potential problem, and it can be avoided by using the "volatile" keyword in your OpenCL code.
But yeah, mapping/unmapping is the way to force a copyback operation from the gpu.(I'm sure you noticed that mapping always returns the original host pointer in that case)