To zoom in and out is it best practice to use glOrtho or glScale?
If you have set up a parallel projection with glOrtho then, as you suggest, you can zoom in and out either by changing the parameters to glOrtho or by using glScale.
I would tend to use glScale, because it's easier to think about setting up a 20% zoom by scaling by 1.2 rather than by having to recalculate your left/right/top/bottom planes.
I wouldn't claim that to be "best practice" though.
It really depends what you call zooming.
In a typical camera setup, (say, gotten from a perspective) a zoom is achieved by reducing the field of view (just like on a real camera!). See the documentation for gluPerspective for the actual math from a field of view to a standard perspective matrix.
glOrtho does not generate a perspective camera, so you don't really mimic a standard zoom. It looks more like a 2-D zoom of the picture (Are you currently using glOrtho ? It's not giving a 3D look at your scene, is it ?)
glOrtho is typically used to set up a projection matrix; glScale is typically used when setting up a model-view matrix, in conjunction with various other transforms.
Most developers set up their projection matrix only at start-of-day, or when the window resizes. "Zooming" implies that you'd change the matrix every frame, so it seems like it should belong in the model-view.
To summarize: Zoom in your model-view, and use glScale.