(very new to C) I'm trying to use irsend with what I think is char* but it won't take it. How can I convert it to what it needs?
If you are sending HEX values like 0x1234abcd from the Pi to the Arduino to send those as an IR code you first have to interpret that string data as a hexadecimal number.
That's not as simple as just casting the string since, as @timemage says, all you're doing there is casting the address of the character array.
Instead you should use strtoul() to parse the string and give you the equivalent number to what it contains.
strtoul() can convert numbers in a number of different bases, and can even work automatically.  From the Linux man page:

SYNOPSIS
unsigned long int strtoul(const char *nptr, char **endptr, int base);

And later on:

If base is zero or 16, the  string  may then include a &quot;0x&quot; prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is '0', in which case it is taken as 8 (octal).

That means it can automatically parse 0x1234abcd as a hexadecimal number, 12345678 as a decimal number, and 052714 as an octal number (it's important to remember that one so you don't accidentally add a leading zero to a decimal number and have it parsed wrong).
So knowing all that you can now:
uint32_t code = strtoul(buffer, NULL, 0);

and code will contain the contents of buffer represented as an actual numeric variable (assuming the content can be parsed as a number).