Think of grep as a highlighter pen — you drag it across a page (file) and it marks every line that matches your pattern. Add -r and it walks through an entire filing cabinet (directory tree), highlighting across every page.
Think of find as a metal detector — you sweep it over a field (directory tree) and it beeps whenever it detects something matching your criteria: name pattern, file type, size, age, etc. Add -exec and the metal detector hands each discovery straight to another tool for processing.
Regular expressions are just a mini-language for describing patterns: ^ means "starts with", $ means "ends with", . means "any single character", and * means "zero or more of the previous thing."