My definitions below refer to how these terms are most commonly used in the context of software engineering.
Package
A folder that contains any number of files and folders. It's not just a folder because it must include one file with a standard name. This file varies depending on the package manager and language. For example, npm requires this file to be named package.json. If you're using python its typically _init_.py.
The contents of the required file aren't standardized across languages or package managers. Typically, this file makes it it easier to use the package.
A package.json file typically will contain information such as who created the package, who else is allowed to use the package, what other packages must be installed to use the package and scripts typically to run the program, run tests and more. You can read npm's package.json docs here.