Both answers by James C. and sanket1729 are very good, but I wanted to give a very high-level answer:
Miniscript is an intermediate more structured representation for actual Bitcoin Scripts. It is useful as a toolbox because it simplifies static analysis of scripts, and things like generic signing.
The policy language is intended to simplify designing Scripts for humans.
The fact that Miniscript has a textual form that looks similar to the policy language is probably confusing, but it is not primarily intended to be written by humans. The textual form exists to permit including miniscript expressions inside output descriptors, and easily communicate them. To actually construct a Miniscript for a specific purpose, you'd generally use the policy language and compile it.