Definition
Unity compiles scripts in a fixed order. Scripts under Assets/Plugins and Assets/Standard Assets go into Assembly-CSharp-firstpass.dll first. Everything else in Assets goes into Assembly-CSharp.dll afterwards. The order lets your main scripts reference the firstpass code, while firstpass code cannot see your main scripts. Third-party SDKs, store plugins, and shared utilities usually end up here. Assembly definition files replace this folder-based split with explicit assemblies.
Relevance
The two assemblies differ in when they compile and what they hold. Assembly-CSharp-firstpass is built first from Plugins and Standard Assets, so third-party SDKs and shared utilities live there. Assembly-CSharp is built afterwards and can call into firstpass. Firstpass cannot see the scripts in Assembly-CSharp.
Example
An in-app purchase plugin and a small wrapper around it live under Assets/Plugins. Both compile into Assembly-CSharp-firstpass.dll. A shop script in Assets calls that wrapper. The wrapper cannot call back into the shop script, because firstpass was compiled first.