WordPress - meta description
What if your $description variable is empty? You are only checking if you're on the front page, or home page, and set it to blog description from wordpress, and if you're not, you're setting it to your post meta value.

What about categories? Tags? other archive pages? 

The 

if($description)


Will return what? False. Why? Because it's a description, not a boolean.

You should check it with

if(isset($description) &amp;&amp; $description !== '')


If the variable is set and not empty string you'll get a true as a value that will pass the if test.

I'd do it like this:

&lt;?php
if (is_page() || is_single()) {
    $description = get_post_meta(get_the_ID(), 'description', true);
} else {
    $description = get_bloginfo('description');
}

if (isset($description) &amp;&amp; $description !== '') {
    ?&gt;
    &lt;meta name="description" content="&lt;?php echo htmlspecialchars($description); ?&gt;" /&gt;
    &lt;?php
}
?&gt;


If you're on a single post or a page, you'll get the post meta, and if you're anywhere else, you'll get blog description. And then output it only if it's set and not empty.

My advice is to see all the cases that can come up with conditional tags and set your description accordingly ;)