1> Pipe uses the internal data structure for this (It already reserved few space for creating pipe) But FIFO is physically present in our directory.
2> Pipe can be accessed through file descriptor which he returned when using pipe system call,But FIFO having name so we can access and load it in to memory using its file name.
3> pipe can be accessed to the related process only(parent -child process) But fifo is accessed to unrelated process too.
4> While reading the pipe its writing end should be closed and reverse also bears the same but in case of fifo as many process can access the same file at a time.
5> Pipe is transient in nature it exists till the process is running but FIFO exists until u deleted it from file system.
6> As it is a file so any time we change the file properties.