We're launching new website with new url structure and new content. Domain is the same. Many old pages are indexed by google. Should I use 404 or 301 and redirect to '/' for these old resources? I also want to remove these pages from google index.
Use HTTP 410 (Gone) for pages you'd like to stop from being indexed.
For changed URLs with the same content use HTTP 301 (Moved Permanently).
If the content has moved permanently, then a 301 response is the correct thing to do (and point it to the new location, not a generic point); If the content has gone forever, you should use the 410 response which means "Gone". Of course, where there is an alternate, you can use a 303 response (along with the URL to the alternate) which can be worthwhile when there isn't an exact match.