Thumbnails for bootstrap carousel jQuery plugin
The only thing worse than missing alt text is bad alt text. 1_tn.jpg is meaningless. Instead, use empty alt text.
Your CSS looks okay. I'll note you can use padding: 5px 0 0;, with padding-left being automatically filled in.
You never use window in your plugin, so you don't need to pass it.
conf is shared across all instances of the plugin. Normally this is fine... but you're mutating conf, instead of using a separate variable to hold the defaults. This means that code like the below won't work as expected:

$(".thumbnails-carousel.not-centered").thumbnailsCarousel({ center: false });

// no need to specify because it's centered by default
$(".thumbnails-carousel.centered").thumbnailsCarousel();

Similarly, you are using a global shared "cache" which apparently holds a jQuery object created from a hard-coded string. In doing so, I am no longer able to:


dynamically generate the carousel
give the carousel my own class name
use more than one carousel in a non-buggy way


Instead, use instance variables. After all, you're providing $.fn.thumbnailsCarousel. When you call $(".thumbnails-carousel").thumbnailsCarousel(), $(".thumbnails-carousel") is passed in as this!
refreshOpacities() is oddly named. After going through it twice I now understand that it's just synchronising the active thumbnail with the active carousel image. Can you rename this function?
bindUiActions() is okay but the lowercase i is bugging me... although some may argue that this is perfectly fine (&agrave; la getElementById()...).
There's no point in explicitly specifying the empty object when calling .thumbnailsCarousel(), since $.extend(x, undefined) === x.


The following point becomes less relevant as you address the above points, mostly because I believe you should refactor the referenced code out anyway.


In init(), you use cache.$carouselContainer.find(".carousel-control"), which is plain silly because you already have cache.$controls.