Conditions for expressing a system as difference equation
A difference equation does not imply causality.

For example, consider this system, with input $x$ and output $y$:

$y[n] + 0.2 y[n-1] = x[n] + 0.5 x[n-1]$

You can solve it (recursively) forwards in time as $y[n] = x[n] + 0.5 x[n-1] - 0.2 y[n-1]$.

Or you can solve it backwards in time as $y[n-1] = 5 x[n] + 2.5 x[n-1] - 5 y[n]$.

These are 2 valid and different results for the same difference equation. These 2 results correspond to the 2 possible regions of convergence of the system response (Z transform). Inner ROC corresponds to the causal solution; outer ROC to the non-causal solution.

Systems of greater order will have more ROCs and more different solutions.

If you impose causality, then you are implicitly selecting the inner ROC.

For the second question, IIR filters can be causal. The example above is an IIR system. The causal impulse response will be $h_{causal}[n] = (-0.2)^n u[n] + 0.5 (-0.2)^{n-1} u[n-1]$. This is causal and IIR.