You probably need:
if [ ${numMd5Files} -eq 1 ] && md5sum -c md5.txt; then
The number of files must be 1 and the md5sum command must be successful for the then block to be executed. You may end up redirecting the output of md5sum to /dev/null so you don't see what it says:
if [ ${numMd5Files} -eq 1 ] && md5sum -c md5.txt >/dev/null 2>&1; then
And if you're only interested in md5sum failures, then the exit status of md5sum can be inverted with the Bash built-in ! command:
if [ ${numMd5Files} -eq 1 ] && ! md5sum -c md5.txt; then
The if command simply tests the exit status of commands. When you use [, the [ command is executed and produces an zero or non-zero exit status. If the exit status is 0, it is successful, and the then clause is executed. If the exit status is not 0, it fails, and the elif or else clause (if present) is executed instead.
There is often an external command /bin/test aka /bin/[ — but most modern shells also have a built-in variant of test and [ that is executed in preference to the external command.
With the && operator, the command on the left is executed; if it is successful, the command on the right is executed, and if it is successful too, the then clause is executed.
The [[ operator is only available as a built-in to the shell.
I still have the code for an external command not (first version in 1991), which I used to use sometimes, and could be installed with a link named !, so that for shells without a built-in ! command, I could still invert the exit condition of a command. It is not very complex!