A full-stack developer needs knowledge of both front-end languages like HTML, CSS, and JavaScript to build the user interface, as well as back-end languages like PHP and Python for the behind-the-scenes functionality. Static websites are basic and deliver fixed information through one or two pages, while dynamic websites can be more expensive to create but offer advantages like letting users upload content. All websites share a common structure with a header, body, and footer, though pages may have different designs.