Is there any difference between the following if statements in bash?
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then Which should I prefer? Are any of those "better"?
The -a isn't available in all older (pre-POSIX) shells, so you should prefer && when trying to be portable.
That said, if you're ONLY supporting bash, use its built-in [[ ]] facility, which allows && within a test rather than only outside it (and, as an added bonus, makes quoting optional):
[[ -z $debian_chroot && -r /etc/debian_chroot ]] See also http://mywiki.wooledge.org/BashGuide/TestsAndConditionals
The first is preferred. See the "Application Usage" section of the POSIX standard for the test built-in for the reason. In brief, -a is an extension marked as obsolete due to ambiguities in meaning for certain expressions.
ifis irrelevant for the question, you can use[even without it.