Monday Mini-Golf #2: Truncating long text
Pyth, 25 bytes

+WnzK&lt;zeo}@zN" -"-Q2K"...


Try it online: Demonstration or Test Suite

Explanation:

+WnzK&lt;zeo}@zN" -"-Q2K"...  implicit: z = input string, Q = input number
        o        -Q2       order the indices N in [0, 1, ..., Q-3] by
         }@zN" -"            z[T] in " -"
                           (hyphen-indices get sorted to the back)
       e                   take the last such number
     &lt;z                    reduce z to length ^
    K                      save this string to K
+WnzK               K"...  print (K + "...") if z != K else only K