OBJ files are very easy to create in comparison to other model formats supported by GZDoom, but do not support animation.
Some features supported by the OBJ format (Parametric surfaces, smooth groups for models without normals, and faces with more than 4 sides...) are not supported for various reasons.
.MTL material definition files are completely ignored by GZDoom and will not be loaded. Instead, by default GZDoom will use the materials that have already been loaded. For example, if your OBJ has a material called STARGR2, then GZDoom will use that texture from the Doom/Doom 2 IWAD.
You can swap out material definitions in MODELDEF by using the SurfaceSkin command. Each "surface" on an OBJ model corresponds to a "usemtl" statement, so if you use
SurfaceSkin 0 0 in your model definition file, you'll change the texture on the faces below the first "usemtl" statement in the OBJ file, and if you use
SurfaceSkin 0 1 in your model definition file, you'll change the texture on the faces below the second "usemtl" statement. Because of an engine limit, however, you cannot replace any textures after the 32nd "usemtl" statement.