That is a part of the PHP language syntax and not strictly part of WordPress itself. The @
symbol denotes that any errors from that function should be suppressed in case it fails for some reason.
This is called an Error Control Operator and you can find more information about it on the PHP documentation website. It stops errors of all types from being displayed (which can be a good or bad thing depending on what is happening).
There doesn't seem to be any difference between having a space and not having one. It will just depend on your style of writing code.
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>