Sharing an explainer I wrote after finally working out what the .gltf .glb export choice actually changes. They are not two formats. Both carry glTF 2.0 from the same Khronos spec. A .gltf is a JSON scene description, a .bin buffer, and separate texture files. A .glb packs the same scene description into a JSON chunk and the geometry (and optionally textures) into a binary chunk.
The choice matters in two places that pull opposite ways. GLB wins on shipping, since it is one file with no relative paths to break. Separate glTF wins on editing and caching, since the JSON is hand-editable and textures are individually cacheable. Load speed and file size are mostly downstream of Draco compression, which works with either container, so the container is not where a file-size problem lives.
I’m building Vectreal (open-source, publishing 3D models to the web), and the full piece with spec references is on our newsroom. Canonical link: glTF vs GLB - What Actually Matters When You Ship to the Web - Vectreal News Room