SQS holds messages for workers. Receiving a message hides it for a visibility timeout; it doesn't delete it. A worker deletes the message using its receipt handle after processing succeeds. With at-least-once delivery, consumers must tolerate a duplicate instead of assuming each business action will run exactly once.
SNS publishes to subscribers. It fits fan-out when several independent consumers need the same event. A common design uses a topic with one queue per consumer so that a slow subscriber doesn't control the others. Retrying forever can create poison-message loops, so use a dead-letter plan and a way to inspect failed work. Match visibility time to realistic processing behavior, and distinguish message retention from the time a received message stays hidden.