Safe means a request has no side effects the user is accountable for, and everything from search crawlers to link prefetchers relies on that — which is how a GET-triggered delete wipes data nobody asked to remove. GET can carry an identifier in the path or query, caching is conditional rather than automatic, and GET is in fact idempotent.
Official docs