Этот typedef объявляет тип, указывающий на структуру, содержимое которой не объявлено.Это означает, что код, использующий его, не может делать такие вещи, как проверка его размера, копирование структуры или проверка его содержимого - он просто не знает, какой у него размер.Это традиционный метод в C для создания непрозрачного или частного типа.Вы можете объявить структуру внутри вашей библиотеки OpenCL, и официальный заголовок не накладывает никаких ограничений на то, что содержит эта структура.Он может даже быть пустым, если все, что вам нужно, это идентификатор, который вы можете сохранить в самом указателе, хотя это редко делается.Примером того же метода, который используется в стандартной C-библиотеке, является тип FILE.Это может быть как простой целочисленный дескриптор файла, так и сложный, как структура, содержащая все состояние файловой системы;стандартный код C не будет знать.Подробности известны только библиотеке.
Короче говоря, вы можете объявить эту структуру так, как вам нравится - при условии, что вы реализуете каждую функцию, которая обрабатывает эту структуру.Программа, которая ссылается на вашу библиотеку, никогда не обрабатывает структуру, а только указывает на нее.