I believe those aren’t “if switches”, rather “test switches” (because you have to use them inside  brackets.
But the difference is:
[ -e FILE ] True if FILE exists.
This will return true for both
/dev/null and for directories.
[ -f FILE ] True if FILE exists and is a regular file.
This will return true for
/etc/hosts and false for
/dev/null (because it is not a regular file), and false for
/dev since it is a directory.