Impossible to access an attribute ("created_at") on a boolean variable ("1") I have read a number of related threads but am still puzzled what this error actually means or how to fix it.

This triggers the error:

&lt;div class="twitter"&gt;

                {% set tweets = craft.twitter.get('statuses/user_timeline', {count:2}) %}

               {% if tweets %}
                 &lt;h3 class="title"&gt;Latest Tweets&lt;/h3&gt;
                 &lt;div class="line-orange-l"&gt;&lt;/div&gt;



                  &lt;ul&gt;
                    {% for tweet in tweets %}
                    {% set tweetDate = date(tweet.created_at).diff(now).format('%a') %}
                    {% if tweetDate == 0 %}
                    {% set tweetTimeAgo = 'today' %}
                    {% else %}
                    {% set tweetTimeAgo = tweetDate ~ ' days ago' %}
                    {% endif %}
                    &lt;li&gt;
                       &lt;p&gt;
                          &lt;i class="fa fa-twitter" aria-hidden="true"&gt;&lt;/i&gt;
                          {{ tweet.text|autoLinkTweet }}&lt;br&gt;
                          &lt;a href="http://twitter.com/{{ tweet.user.screen_name|raw }}" class="author"&gt;@{{ tweet.user.screen_name|raw }}&lt;/a&gt; /
                          &lt;span class="posted"&gt;Posted {{ tweetTimeAgo }}&lt;/span&gt;
                       &lt;/p&gt;
                    &lt;/li&gt;
                    {% endfor %}
                  &lt;/ul&gt;
                  {% endif %}
                 &lt;/ul&gt;
              &lt;/div&gt;


What would fix this?
That error basically means that you're trying to use the variable tweet as an object/iterable, but it's actually just a boolean (true/false). 

Assuming the plugin you're using (i.e. craft.twitter) is Dukt's Twitter plugin, I think this is just a matter of your syntax being a bit off. The Dukt plugin's craft.twitter.get() method actually returns a response object where the 
tweet objects are nested in an array called data. In other words, you can't loop on the object returned by craft.twitter.get() directly; you'll need to use the array in that object's data property:

{% set response = craft.twitter.get('statuses/user_timeline', {count:2}) %}

{% if response.success %}
    {% set tweets = response.data %}
    {% for tweet in tweets %}
        {% set tweetDate = date(tweet.created_at).diff(now).format('%a') %}
        ...
    {% endfor %}
{% else %}
    &lt;p&gt;An error occured:&lt;/p&gt;
    &lt;pre&gt;{{ response.data|json_encode(constant('JSON_PRETTY_PRINT')) }}&lt;/pre&gt;
{% endif %}


The above example is lifted from the plugin's documentation (although in the actual docs there's a typo, which could well be the cause for your issue). Note that the example also accounts for Things Going Wrong (tm), which is always a good idea when you're working with a third party API.

If the plugin you're using is not Dukt's, you'll need to check your plugin's documentation, to verify you're using it correctly. As a debugging effort, you might also want to try and dump() the response object variable to verify that it contains what you think it contains:

{% set tweets = craft.twitter.get('statuses/user_timeline', {count:2}) %}
{{ dump(tweets) }}


Note that the dump() method only works when devMode is set to true, and should not be left in production code.