How is the product $L\cdot S$ between orbital and spin angular momentum operators defined? Do they act on the same or different Hilbert spaces? For an electron, are the Hilbert spaces for the spin angular momentum and the orbital angular momentum the same or are they different? If they're different, how do we justify the operator $L\cdot S$ in spin-orbit coupling?
Also for coupling of 2 spins, what is the Hilbert space being considered? Is it $\mathbb{C}^2\otimes\mathbb{C}^2$ as I think it should be or otherwise? If its what I think it should be, what is the meaning of the operator $S_1\cdot S_2$?
 A: For both the situations you're considering, the vector spaces are different, and the joint state space is the tensor product of the individual vector spaces.
To describe operators on this space, we simply use the tensor product of operators: if $\hat{L}_z:\mathcal H_\mathrm{orb} \to \mathcal H_\mathrm{orb}$ and $\hat{S}_z:\mathcal H_\mathrm{spin} \to \mathcal H_\mathrm{spin}$, then their tensor product
$$
\hat{L}_z\otimes \hat{S}_z:\mathcal H_\mathrm{orb}\otimes \mathcal H_\mathrm{spin} \to \mathcal H_\mathrm{orb} \otimes \mathcal H_\mathrm{spin}
$$
is uniquely defined by its action on product states
$$
(\hat{L}_z\otimes \hat{S}_z)|\psi⟩\otimes |\phi⟩ = (\hat{L}_z|\psi⟩)\otimes (\hat{S}_z|\phi⟩)
$$
and by linearity.
On top of that structure, we often consider vector operations on the vector characters of those operators, including in particular their dot product
$$
\hat{\mathbf{L}} \stackrel{\otimes}{\cdot} \hat{\mathbf{S}}
=
\sum_{j=1}^3 \hat{L}_j\otimes \hat{S}_j.
$$
This is a legitimate dot product in that one can show that it does not depend on the basis with respect to which the components are taken, because each component transforms as a vector and so the usual proof techniques still apply.
Now, in practice, we normally drop the explicit tensor-product marks $\otimes$ unless we really need the clarity, because the structure is typically clear from the context (so that a product like $\hat{L}_z\hat{S}_z$ is generally unambiguous) and the explicit marks add notational bulk and therefore make everything harder to read. Thus, what you'll typically see is notation of the form
$$
\hat{\mathbf{L}} \cdot \hat{\mathbf{S}}
=
\sum_{j=1}^3 \hat{L}_j \hat{S}_j.
$$
in which the tensor products between operators that act on different sectors of the state space are implicit.
