Two forms are different. They both allocate memory, but with different amounts.
General rule is as follows:
when allocating type T, the result of malloc shall be casted to T*. 
void sample1()
{
    struct pollfd *pfd = (struct pollfd*)malloc(sizeof(struct pollfd));
    // pfd is points to a memory with a size of struct pollfd
    ...
    free(pfd);
}
void sample2()
{
    struct pollfd *pfd = (struct pollfd*)malloc(sizeof(*pfd));
    // same as above, but uses variable type instead
    free(pfd);
}
If you specify incorrect type in malloc argument, generally that will lead to buffer overrun problems:
void sample3()
{
    struct x *px= (struct x*)malloc(sizeof(struct x*));
    x->field = 5; //<< error, as allocated only 4 or 8 bytes depending on pointer size
}