Yes if you don't private them you can access them outside the scope.
But if you want variables that can be access everywhere he is something better :
library Globals //All the following code will be put on the top of the map.
public constant integer MY_ID = 'A000' //To call this variable you will have to use this : "Globals_MY_ID". To call public variables you have to do this "NameOfTheScopeOrLibrary_NameOfTheVariable"
It is not I told to code on vJASS
But if you use one vJASS feature why not using the others xD ?
So for your questions now :
What you pointed is used with structs.
struct Point //Struct are used to define new variable types by using many basic types.
function Someting takes nothing returns nothing
local Point p = Point.create() //I create a new Point variable
set p.x = 42 //I change the value x of my Point variable
set p.y = -23 //I change the value y of my Point variable
//Do whatever you want
call p.destroy() //When I don't need this anymore I destroy the variable
Scope/Libraries are used to store your code.
The main difference is libraries put your code on the top of the map and scope does nothing special.
You can private and public things only in those things.
Private means that you can't access it outside the scope/library.