если очень просто, то ты у функции задаешь что хочешь получить на вход и что на выходе. например, на вход хочу получить число, кратное 2 и больше или равно 6, компилятор проверит все вызовы этой функции на это правило
то, что ты не видел, что их кто то используют, не значит, что их не используют. у меня во дворе арбузы не растут, но я отдаю себе отчёт в том, что они есть