Are IIR filters (and specifically Butterworth filter) causal?
Yes, Butterworth are IIR.  The decay from an impulse technically lasts forever.
Yes, all [implementable] IIR are causal.
Yes, because of #1 and #2.
Don't use signal.filtfilt.  Use signal.lfilter.  filtfilt does the same thing as lfilter, except twice, in opposite directions, which changes a causal filter into a zero-phase filter.

However, as the documentation for both of those functions suggests, for most practical use, you should actually use the SOS variants instead:

The function sosfilt (and filter design using output='sos') should be
preferred over lfilter for most filtering tasks, as second-order sections
have fewer numerical problems.

To summarize the functions:

lfilter: Causal single-stage filtering (low orders only)
filtfilt: Zero-phase single-stage filtering (low orders only)
sosfilt: Causal second-order sections filtering
sosfiltfilt: Zero-phase second-order sections filtering

Really the only reason to use lfilter or filtfilt is if your coefficients are already in b, a format, if you're implementing something out of a textbook, etc.
If you're designing the filter yourself, then just use SOS form, which reduces numerical error.
Note that the filtfilt functions apply the filter twice, so it will have double the order of the original filter.