Proving right angle using vectors
You can simplify and generalize at the same time.
Instead of defining $E$ and $F$ as midpoints, define them as weighted averages:
$$ E=kC+(1-k)D $$ $$ F=kG+(1-k)A $$
(In your question $k=1/2.)$ As $k$ goes from $0$ to $1$, $\triangle{BFE}$ interpolates the similar triangles $\triangle{BAD}$ and $\triangle{BGC}$. And it is also similar to these two triangles.
Given that $(B-G)\cdot(C-G)=0$ and $(B-A)\cdot(D-A)=0$, you can show that $(B-F)\cdot(E-F)=0$ (the simplification is a bit tedious, and I used the fact that $(Rx)\cdot y+(Ry)\cdot x=0$ for perpendicular vectors $x,y$ and rotation $R$).
More about the phenomenon of linearly interpolating two directly similar figures can be found by Googling the terms 'spiral similarity' and 'fundamental theorem of directly similar figures'. Also, instead of using vectors you can use complex numbers, as shown in $\textbf{2.2}$ of Zachary Abel's Mean Geometry paper.