you would sort to minimize shader,texture binds,... and then do multiple drawcalls under the same state (shader, textures...). Consecutive drawcalls under same state are cheaper than setting up the state and drawing individual pieces.
Whether you can get a single drawcall across objects is a bit more work (requires objects stored in same buffers...), but would give an additional speed benefit.
typical state changes in a "hot loop" (drawing your objects):
* raster state (blending,depthtest... that is typically rarely changing and you can think of a system that prefers to organize stuff as layers, e.g. one layer doing all blended stuff on top of a layer rendering all opaque)
* shader binds
* vertex/index buffer binds (your actual geometry is often stored on some gpu buffer)
* texture binds
* uniform binds/updates (typically stuff like control parameters in your shaders)
A drawcall just defines a subrange within your geometry buffers to be drawn under whatever state is currently active. (raster apis are state machines)
Now the more has changed between drawcalls, the more validation has to be done by the driver and additional commands sent to the gpu.
If you want to go through the gory details I recommend reading this