Hi,
1) I never tried it myself, but AFAIK it will work.
2) This is not possible with pure OpenCL. When creating a Buffer object, notice how you pass the context as a parameter. That Buffer object is valid only in the specified context:
Buffer(const Context &context, cl_mem_flags flags, ::size_t size, void *host_ptr = NULL, cl_int *err = NULL);