Use the different types to prioritize the actions presented to the end user. Usually, you should only have one primary button in a view. Use tertiary buttons to decrease the priority of an action.
The "tertiary-inline" type is useful when you want to add a
Use "contrast" if you need increased legibility or a more subdued look. Use "success" for actions that complete a longer sequence of steps, like a checkout flow. Use "error" for actions that can cause permanent data-loss, like deleting content created by the user.
You can combine the sizes with any other theme variation.
Icon-only buttons should use the "icon" variation which reduces the width of the button.