WebGL uses ArrayBuffers and typed arrays to transfer data to the GPU. ArrayBuffers represent unstructured binary data that can be modified by typed array views of the buffer, such as Int8Array or Float32Array views. Views can reference the whole buffer or a subset of it, and methods like set() are used to populate the views and transfer data to WebGL buffers.