The three terms specify the function of the component, not its size.
A shim is a component used to fill up an unwanted gap. Shims may be flat or tapered, and are often specified as "select to fit" parts, rather than as a part with a predefined thickness.
A spacer or standoff is a fixed size component designed to separate two other parts by a known amount. It does not necessarily fill all the space between the components - for example the purpose might be to separate them for electrical insulation, or to allow cooling air to flow between them.
Shims are usually fairly thin, but spacers can be thicker (inches or even several feet thick, in large structures).
A washer is a part used to spread the load between the two components, e.g., between a bolt- or screw-head and whatever the bolt or screw is fixing.
Washers are not necessarily flat - for example, Belleville washers, split washers, star washers, wave washers, etc. The purpose of a non-flat washer is often to create a well-defined force between the parts on either side when it is installed by squashing it flat. That force may be used to resist unwanted rotation of a screw or bolt if the structure is vibrating, for example.
A particular part may have more than one of these functions - for example a shim or spacer may also act as a flat washer. In that case, the naming of a particular part is a bit arbitrary, or a pedantic name like "spacer-washer" might be used.
All this might lead to some problem situations. For example if you are selling a self-build kit, you might be including a packet of "20 washers" (all the same size and bought pre-packed from a hardware supplier) but in fact some are used in the kit as washers, some as spacers, and some as shims.
How you deal that might depend on what engineering knowledge you expect your customers to have. An experienced engineer might prefer to see the parts named "correctly" on an assembly drawing which follows international standard drawing conventions, while a beginner might prefer a more pictorial sketch which is mainly intended to show "what part goes where" when building the kit.