Literally what the docs you quoted tell you (the details can be gleaned by comparing the available methods):
SimpleQueue is always unbounded (Queue is optionally bounded); they removed the full method (because it can never be full)
SimpleQueue doesn't do task tracking, so it doesn't provide task_done (for consumers to indicate a task has been completed) or join (to allow a thread to block until all items put have had a matching task_done call)
This simplifies a lot of the code by dropping support for comparatively rare scenarios (I've almost never seen anyone use task_done or join, and when they do, it's often buggy, with exceptions potentially bypassing a task_done, making join block forever), improving performance a bit by side-effect.
Side-note: If you don't actually need the blocking features at all, you can skip the queue module and just use collections.deque. It's still thread-safe and atomic for appends and pops from either end, it just doesn't provide the ability to do a blocking get when the deque is empty, in exchange for being much lower overhead (implemented entirely in C, with no supplementary locking like queue classes).
QueueandSImpleQueue.SimpleQueuedoesn't havejoin(),full()andtask_done()- so you can't block queue. And it doesn't havemaxsizeso you can't limit its size.