In the prototype you can omit the name of parameters, but their type is mandatory.
so the code
int create_list(int);
Is correct.
When you define (instance) the function it's mandatory to specify type returned by function (that you have not specified) and type and name of parameters (to also crosscheck the forward declaration above).
You get a warning and not an error just because when the return type is not specified C assumes that it is an integer, that is legal with original K&R syntax, but is deprecated in C99 and C11. These standards require type specification.