To get a nice layout of a page

use the layout package to understand the various dimensions involved in designing a page and their relationships.
To have two lines in the header space you need to set headheight=25pt (5) or more, if plan to add more lines or a figure. Then to separate the header from the text area set headsep=20pt (6) or similar. Finally to allocate enough space from the top of the physical page to the top of the text area set the top= 1in or more.
.

The headheight, the headsep, and others
are fixed spaces reserved for your use. They are not aware of overflows nor they collapse in the absence of content.
There’s more than one way to skin a cat.
If you overspecify geometry will complain.
The log file is also instructive.
*geometry* driver: auto-detecting
*geometry* detected driver: luatex
*geometry* verbose mode - [ preamble ] result:
* driver: luatex
* paper: a4paper
* layout: <same size as paper>
* layoutoffset:(h,v)=(0.0pt,0.0pt)
* modes: includehead
* h-part:(L,W,R)=(89.62709pt, 418.25368pt, 89.6271pt)
* v-part:(T,H,B)=(60.0pt, 683.6402pt, 101.40665pt)
* \paperwidth=597.50787pt
* \paperheight=845.04684pt
* \textwidth=418.25368pt
* \textheight=633.6402pt
* \oddsidemargin=17.3571pt
* \evensidemargin=17.3571pt
* \topmargin=-12.26999pt
* \headheight=25.0pt
* \headsep=25.0pt
* \topskip=11.0pt
* \footskip=30.0pt
* \marginparwidth=50.0pt
* \marginparsep=10.0pt
* \columnsep=10.0pt
* \skip\footins=10.0pt plus 4.0pt minus 2.0pt
* \hoffset=0.0pt
* \voffset=0.0pt
* \mag=1000
* \@twocolumnfalse
* \@twosidefalse
* \@mparswitchfalse
* \@reversemarginfalse
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
This is a MWE
\documentclass[11pt, a4paper]{article}
\usepackage[ headheight=25pt, headsep=25pt, top = 60pt, includehead]{geometry}
\usepackage{fontspec}
\usepackage{fancyhdr}
\usepackage{layout}% added<<<<<
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{A header \ a new line in the header}
\renewcommand{\headrulewidth}{1.5pt}
\begin{document}
\layout% added<<<<<
\section*{Education}
\end{document}
headheight? – Bernard Aug 18 '21 at 09:22geometrypackage docs "Ifincludeheadis set totrue,headheightandheadsepare considered as a part ofheight". So I would argue that geometry should calculate the appropriateheadheightfor me ? – user32882 Aug 18 '21 at 09:26headsep. But do you think that should matter anyway? I would have expectedgeometryto calculate the correctheadheightsuch that no matter whatheadsepI pick it would always work. – user32882 Aug 18 '21 at 09:344exyields a correct result. There are warnings as to headheight being too small, and advising to make it at least 25.52pt. – Bernard Aug 18 '21 at 09:38includeheadonly works for single line headers? That seems a little... limiting? – user32882 Aug 18 '21 at 09:40geometrydoesn't dynamically calculate theheadheightbased on the header generated byfancyhdr. I see what you're saying. In that case, can I redefine the defaultheadheightingeometrybased on my realfancyhdrheader instead of hardcoding it like that? In other words, is the realheadheightvalue stored in a variable somewhere and can I pass that togeometry? – user32882 Aug 18 '21 at 09:44geometry{headheight=…}. I think it's better to specify it in the ex unit, so if you decide to modify the font size of your document, you shoudn't have any modification to do for headheight. – Bernard Aug 18 '21 at 09:52fancyhdrwill have a (limited) facility to automatically calculate\headheightand pass it togeometry. I have it working in my private development copy. For now use\usepackage[includehead, headsep=30pt,headheight=26pt]{geometry}or similar. For the value needed forheadheight`` see your.log` file. – Pieter van Oostrum Aug 18 '21 at 13:38