$E (XY)=E (xE (Y|X)) $ - is this always true? By the law of total expectation,
$$E \left(XY\right) =E \left[E \left(XY\mid X=x\right)\right]=\dots$$
Now, because $X=x $ is a constant and by linearity of expectation, 
$$\dots=E [xE (Y|X=x)]$$
So we got that no matter what $X,Y$ are: $E (XY)=E[xE (Y|X)] $. 
Is this true? Is my reasoning right? 

Your reasoning is basically right but your notation is objectionable. What does "$X=x$  is a constant" mean? If $x$ is a constant, then it would came outside the outer expectation - and the law of total expectation would not apply. You should simply write
$$E (X\, Y) =E (E(X \, Y \mid X))=E (X \, E(Y\mid X))$$
This is indeed true for any $X,Y$. And, by the way, it leads directly to the conclusiont that "unpredictableness implies uncorrelatedness", or $E(Y|X)=E(Y) \implies E(X Y) = E(X) E(Y)$ (but not the reverse)
