You can find all the necessary theoretical elements (and a lot more) in the book "Convex Analysis" by R. Tyrrell Rockafellar. Fair warning: reading this book is tantamount to a graduate class in convex analysis. I suspect most books on mathematical programming will contain the relevant results, although quite possibly by citing other sources rather than spending the necessary space to develop them from scratch. For instance, the book "Combinatorial Optimization: Algorithms and Complexity" by Papadimitriou and Steiglitz contains a theorem (2.3) that asserts that every convex polytope is the convex hull of its vertices. Rather than including a proof, they cite three sources (including Rockafellar).
If you accept that theorem, the part about the optimum being at a vertex is easy. Let $P$ be the polytope, $f$ a convex function to be maximized over $P$ and $x^*\in P$ any maximizer of $f$. By the theorem, we can write $x^*$ as $$x^*=\sum_{i=1}^n \alpha_i v_i$$where $v_1,\dots,v_n$ are the vertices of $P$ and the $\alpha_i$ are nonnegative weights such that $\sum_i \alpha_i = 1$ (using the definition of a convex combination). Since $f$ is convex, $$f(x^*)=f(\sum_{i=1}^n \alpha_i v_i)\le \sum_{i=1}^n \alpha_i f(v_i)\le \sum_{i=1}^n \alpha_i f(x^*) = f(x^*),$$where the last inequality comes from the assumption that $x^*$ maximizes $f$ over $P$. If none of the vertices with positive weight in the sum are maximizers, that inequality becomes strict and you end up with a contradiction. So at least one vertex is a maximizer.
In general, that does not preclude also having a maximizer that is not a vertex, but since $Q$ is positive definite (rather than positive semidefinite) in the question, $f(x)=x^\prime Q x$ is strictly convex, making the first inequality strict (leading to a contradiction) if more than one of the $\alpha_i$ is positive. If only one of them is positive, it must be 1, and so $x^*$ must be one of the vertices.