1. only size. you can't allocate bigger buffer than device allow. also sum of size all used buffers can't exceed global memory size of device.
3. you mean not identical? you get gibberish data and also you can end up read/write beyond size of buffer which can lead to many cases of undefined behavior. that mean you program crash, OS can crash or it will cause that your milk sour.
OpenCL 1.1? Can you give your system details: GPU, Driver, SDK, OS.