pfile and init are two names for the same thing, these can only be updated by editting the file with a text editor.
spfile is a newer version introduced in 9i, spfiles can me updated with alter system commands.
The function of both is the same, they define various parameters (hence the "p" in their names) that are loaded when the database/instance starts