What noindex does
Noindex is a rule you give search engines for a specific URL: crawl it if you like, but do not show it in search results. You set it with a meta robots tag in the page head, <meta name="robots" content="noindex">, or with an X-Robots-Tag HTTP header for files such as PDFs.
When Google next crawls the page and sees the directive, it drops the page from results, even if other sites link to it.
When to use noindex
Good candidates are thin or utility pages that add nothing in search: internal search results, thank-you and checkout pages, tag archives with a handful of posts, staging or preview copies and user account pages.
Do not noindex pages you want ranking, and do not use it to fix duplicate content that should consolidate signals; a canonical tag or a 301 redirect does that job better.
Why noindex sometimes does not work
Search engines must crawl the page to see a noindex. If the same URL is blocked in robots.txt, the crawler never reads the tag and the URL can stay indexed from links. Remove the robots.txt block until the page has dropped out.
Other causes are a noindex added by JavaScript after the initial HTML (Google may not render it in time), conflicting directives in the tag and the header, and simply waiting: removal happens only after the next crawl.
Example
Noindex as a meta tag and as a header:
<meta name="robots" content="noindex, follow">
X-Robots-Tag: noindex