Hi Mimi,
User Properties are similar is some respects to Custom Event Parameters -- both add context to an event so you can better understand the nature of each event.
However, User Properties differ from Custom Event Parameters in the following ways :
1. You set User Property values once (via the setUserProperty API) and they persist across all lifecycles of the app.
2. After setting as User Property value, it is automatically associated with every event that is logged thereafter.
3. If you register the User Property in the Analytics "User Properties" tab, you can use it to filter all of your reports.
#3 is really where the power of User Properties is displayed and where the distinction between User Properties and Custom Event Parameters is most obvious. You should think about the characteristics which distinguish some of your users from others and register User Properties for each of those characteristics. For example, if you know the profession of your users, you should register a "profession" User Property. Then, you would be able to apply this User Property as a filter on all of your reports to produce insights into how different segments of your userbase use your app differently.
User Properties are also very handy for measuring experiments. For example, if your app shows ads, but you're not sure how frequently you should show ads because it might impact user engagement, you can register a User Property called "ad_frequency" and set the value to X (the frequency) and then filter all of your reports using this User Property to gauge the impact of each value.
Hope that helps.
Steve Ganem
Product Manager, Firebase Analytics