You should use prepare
only when you’re using SQL query – this function takes query and params and returns a safe SQL query filled with given params.
Its result is a SQL query. So you can (and should) use it whenever you’re creating a SQL query and put some params in it.
With $wpdb->delete
or $wpdb->update
you don’t create any string containing SQL query – both these functions are taking only params and the create and run the queries for you – so there is no need for preparing.
If you use $wpdb->insert
, then you also don’t have to prepare – there is nothing to be prepared.
But if you insert with raw SQL, as you do in your code, then yes – you should always prepare such query.