Converting an image to a data URI lets you drop it straight into CSS, HTML or a JSON payload with no separate file to host. It is genuinely handy for tiny assets and for embedding images in systems that only accept text. The cost is a 33 percent size increase and the loss of independent browser caching.
As a rule of thumb, stop around 2 to 5 KB. Beyond that the page grows, the inlined bytes are re-downloaded with every page load rather than cached, and you lose the ability to serve the image lazily.
Base64 encodes three bytes of binary as four text characters. That roughly 33 percent overhead is inherent to the format, not something a tool can optimise away.
No. It re-encodes the exact same bytes into a text representation. Compress or resize the image first if you want it smaller, because encoding will not do it for you.
Yes. The output includes the data:image prefix, so it can be pasted straight into a background-image url() or an img src attribute.