When the Linux kernel mounts a file system from physical storage, it keeps a cache for quick access. A memory filesystem is just this kernel cache without a backing store.
An initramfs is a compressed cpio format file that the kernel extracts into a memory filesystem and uses as the root filesystem. It will run the init program found in it. This initramfs can either be compiled into the kernel, so one single binary will contain both the kernel and root filesystem, or passed to the kernel as an external file. This latter use case needs the legacy initrd kernel support compiled in.