A shader material is a shader where you can write the GLSL-like code that runs on the GPU and tells the GPU how to draw the object with the correct textures, lighting, etc. Its a more low-level way of controlling the look of the object being drawn.
A SpatialMaterial is a pre-written Physics Based Rendering (PBR) shader that comes with Godot that makes it where you can get nice looking results with PBR maps without having to write the shader yourself. The SpatialMaterial is flexible and exposes several properties so you can get a huge variety of looks without ever having to touch a shader. For a large majority of games, the SpatialMaterial should work just fine for most (if not all) of the objects in the game.
You can also convert a SpatialMaterial to a ShaderMaterial in the drop down tab in the Godot inspector after you have assigned a material slot to a SpatialMaterial, so you can see how it works :smile: