It tells the compiler what the following variable type is.
Your example:
(struct IoRequest *)IORequest
Tells the compiler that the variable "IORequest" is a pointer to a struct IoRequest.
It has probably been declared earlier on with:
struct SerialIORequest *IORequest;
Or something like that. The serial.device needs a special IORequest structure, but OpenDevice defines struct IORequest as the type for the IORequest, so you need to tell it to use the variable as a type IORequest, rather than the defined type SerialIORequest.
Get it? :-)
Chris