I notice many of the commands can be used with or without _ARB. Which is preferred? Does adding the ARB provide more backward compatibility?
The non ARB version of functions are core functions. So, the right GL version must be supported by the driver. You can check that with glGetString(GL_VERSION).
Yes, Using ARB or even EXT version gives more compatibility specially if you want to support some old GPUs like nvidia TNT and Radeon 7500. Of course, you have to check the extension is supported.