add_image_size() should indeed be called in the after_setup_theme hook. I've used the cropping before, works fine and seemingly correctly to me.
This code works for me:
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_image_size( 'theme-custom-size', 100, 100, true );
}
Then later in the theme, when I want to get an image at that size:
echo wp_get_attachment_image($ID, 'theme-custom-size');
Actually, I'm using it more like this:
echo previous_image_link('theme-custom-size');
But the same basic principle applies. To get the post thumbnail (aka featured image) in your custom size, then you simply do this:
the_post_thumbnail( 'theme-custom-size' );
Easy. Works fine.
I think the confusion may come from the initial post in this topic. I have no idea why the topic author used "featured". The default size name for the featured image is "post-thumbnail". To set the default image size of that image you'd use this code:
add_image_size( 'post-thumbnail', 100, 100, true );
By doing that, the post thumbnail would be defaulted to 100x100, cropped. The code to display it could simply be this in that case because of the default size setting being adjusted:
the_post_thumbnail();
Note that images are never increased in size. So if you're trying to hard crop an image to bigger than the actual image size, then it won't work.