If you want to display different icons on hover, CSS is the way to go.
Liquid is a scripting language that runs before the webpage is fully loaded. This means that once the page content is visible, the liquid code has already executed and won't run again until the page is refreshed.
In simpler terms for developers, attempting to call a back-end function using front-end tools is not recommended.
CSS and JS cannot directly interact with liquid, but liquid can interact with them. Put another way, you can generate JavaScript and CSS code using Liquid, but you cannot generate liquid code using JS and CSS.
Additionally, the use of includes is outdated and you should opt for render instead.
Below is the code snippet to achieve the desired functionality:
<a href="{{ section.settings.button_link }}" class="btn--rounded">
<div class="icon">
{% render 'icon-btn--rounded' %}
</div><!-- /.icon -->
<div class="icon icon--hover">
{% render 'icon-btn--white' %}
</div><!-- /.icon -->
<div class="link-label">{{ section.settings.button_label }}</div>
</a>
<style>
.icon--hover {
display: none;
}
.btn--rounded:hover .icon {
display: none;
}
.btn--rounded:hover .icon--hover {
display: block;
}
</style>