mssql PERCENTILE_CONT group by year
Yes, using PERCENTILE_CONT(0.50) is a way of finding the median. You can check the Basic syntax example section of the PERCENTILE_CONT doc to see an example.
About the GROUP BY, the PARTITION BY clause is already creating groups of years, so you don't need to use a group by on the subquery. Also, you shouldn't use ORDER BY on that subquery, or you'll get the error:

The ORDER BY clause is invalid in views, inline functions, derived
tables, subqueries, and common table expressions, unless TOP, OFFSET
or FOR XML is also specified.

Try your query like this:
SELECT
    years,
    MAX(NET_MERIT) AS high_end,
    MAX(q3) AS q3,
    MAX(MEDIAN) AS median,
    MAX(q1) AS q1,
    MIN(NET_MERIT) AS low_end

FROM(

    SELECT YEAR(FA_BDATE) AS years ,NET_MERIT,
    PERCENTILE_CONT(0.25) WITHIN GROUP(ORDER BY NET_MERIT) OVER (PARTITION BY YEAR(FA_BDATE)) AS q1,
    PERCENTILE_CONT(0.50) WITHIN GROUP(ORDER BY NET_MERIT) OVER (PARTITION BY YEAR(FA_BDATE)) AS MEDIAN,
    PERCENTILE_CONT(0.75) WITHIN GROUP(ORDER BY NET_MERIT) OVER (PARTITION BY YEAR(FA_BDATE)) AS q3
    FROM HerdAnalytics_tbl    

) AS sub
GROUP BY years
ORDER BY years;