How to use short codes with arguments
Try the Shortcode module. It was the among the first hits when I searched for Drupal 8 shortcode.



For the second part of your question I'd recommend Insert View. You can embed a view via a short code in your content and also pass arguments to it.


  Insert View is a filter that allows users to embed content lists
  generated by the Views module into node bodies and blocks using
  relatively simple tag syntax.
  
  Why would you want to use an Insert View tag when you could just
  invoke a view using PHP? Simple. When you want to allow users to
  insert views or edit content on a page with an inserted view without
  granting them permission to use PHP.
  
  The tag syntax is [view:name=display=args]
  
  The parameters are: view name, view display id, view arguments.
  
  Valid examples:
  
  
  [view:my_view] is replaced by the content listing.
  [view:my_view=my_display] invokes the view using the specified display.
  [view:my_view=my_display=arg1/arg2/arg3] invokes the view using the specified display and passes arg1, arg2 and arg3 to the view.
  [view:my_view==arg1/arg2/arg3] passes arg1 to the view and will use the "default" display set for the view.