В случае того же VAO У нас есть переменная VAO типа Gluint() и вот мы вызываем какие-то методы и в аргументах указываем нашу переменную, чтобы над ней или для нее выполнить работу
Для общего понимания нужно писать на языках в которых оно есть. Никто же не говорит вместо питона начать кодить только на ассемблере, но я не верю, что не видя ассемблера можно понять что такое регистры.