Attributes store data permanently. Their data is never forgotten - it can be used in all parts of your project and is downloadable in export files, reports, and so on. Attributes are structured properties that are tied to entities in the project. For example, the entity "Audience" might have attributes like "score", "health", "shopping list", or "friends". The entity "Team" might have attributes like "team_leader", "team_color", or "mascot".
Dynamic Variable (also known as "variables") store data temporarily - only while processing the current trigger event. For example, you could use variables if you need to parse information from an incoming message and use it in an outgoing message. You can also use variables to perform calculations that span across trigger, condition, and action, or across multiple actions but it needs to be the same processing cycle.